java使用poi读取excel内容方法实例


在Java中,使用Apache POI库来读取Excel文件(包括`.xls`和`.xlsx`格式)是一种常见且高效的方式。以下是一个简单的例子,展示了如何使用POI库来读取`.xlsx`格式的Excel文件内容。

首先,确保你的项目中已经添加了Apache POI的依赖。如果你使用Maven,可以在`pom.xml`中添加类似下面的依赖:


<!-- Apache POI -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>你的POI版本号</version>
</dependency>

请替换`你的POI版本号`为当前可用的POI版本号。

然后,你可以使用以下代码来读取Excel文件的内容:


import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ExcelReader {

    public static void main(String[] args) {
        // Excel文件路径
        String filePath = "你的Excel文件路径.xlsx";

        // 使用FileInputStream打开文件
        try (FileInputStream fis = new FileInputStream(new File(filePath));
             Workbook workbook = new XSSFWorkbook(fis)) {

            // 获取第一个工作表(sheet),索引从0开始
            Sheet sheet = workbook.getSheetAt(0);

            // 遍历行(Row)
            for (Row row : sheet) {
                // 遍历列(Cell)
                for (Cell cell : row) {
                    // 根据Cell类型读取数据
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            // 如果是日期格式,则需要特殊处理
                            if (DateUtil.isCellDateFormatted(cell)) {
                                System.out.print(cell.getDateCellValue() + "\t");
                            } else {
                                System.out.print(cell.getNumericCellValue() + "\t");
                            }
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + "\t");
                            break;
                        case FORMULA:
                            // 处理公式
                            System.out.print(cell.getCellFormula() + "\t");
                            break;
                        case BLANK:
                            // 空单元格,不处理或打印空字符串
                            System.out.print("\t");
                            break;
                        default:
                            System.out.print("未知类型\t");
                    }
                }
                // 换行
                System.out.println();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个例子中,`filePath`变量应该被替换为你的Excel文件的实际路径。代码会打开这个文件,读取第一个工作表的所有行和列,并根据单元格的类型打印出相应的值。注意,对于数字类型的单元格,如果它是日期格式的,我们需要使用`DateUtil.isCellDateFormatted`方法来判断,并相应地以日期格式打印。

请确保在尝试运行此代码之前,你的项目中已经正确添加了Apache POI的依赖。