当前位置:首页 > Java

java如何读取excel中的数据

2026-02-05 04:28:54Java

读取Excel数据的常用方法

在Java中读取Excel数据可以通过多种方式实现,以下是几种常见的方法:

使用Apache POI库

Apache POI是处理Microsoft Office文件(包括Excel)的流行Java库。支持.xls(HSSF)和.xlsx(XSSF)格式。

添加依赖(Maven)

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

读取.xlsx文件示例

FileInputStream file = new FileInputStream("data.xlsx");
XSSFWorkbook workbook = new XSSFWorkbook(file);
XSSFSheet sheet = workbook.getSheetAt(0);

Iterator<Row> rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
    Row row = rowIterator.next();
    Iterator<Cell> cellIterator = row.cellIterator();

    while (cellIterator.hasNext()) {
        Cell cell = cellIterator.next();
        switch (cell.getCellType()) {
            case STRING -> System.out.print(cell.getStringCellValue() + "\t");
            case NUMERIC -> System.out.print(cell.getNumericCellValue() + "\t");
            case BOOLEAN -> System.out.print(cell.getBooleanCellValue() + "\t");
        }
    }
    System.out.println();
}
workbook.close();
file.close();

使用EasyExcel库

EasyExcel是阿里巴巴开源的Excel处理工具,适合大数据量读取,内存消耗低。

添加依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

使用监听器模式读取

// 定义数据模型
@Data
public class DemoData {
    private String string;
    private Double number;
    private Date date;
}

// 创建监听器
public class DemoDataListener extends AnalysisEventListener<DemoData> {
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        System.out.println("读取到数据: " + data);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("读取完成");
    }
}

// 调用读取
EasyExcel.read("data.xlsx", DemoData.class, new DemoDataListener()).sheet().doRead();

使用JExcelAPI(适用于旧版.xls)

JExcelAPI是处理Excel 97-2003格式(.xls)的轻量级库。

添加依赖

<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

读取示例

Workbook workbook = Workbook.getWorkbook(new File("data.xls"));
Sheet sheet = workbook.getSheet(0);

for (int row = 0; row < sheet.getRows(); row++) {
    for (int col = 0; col < sheet.getColumns(); col++) {
        Cell cell = sheet.getCell(col, row);
        System.out.print(cell.getContents() + "\t");
    }
    System.out.println();
}
workbook.close();

性能优化建议

对于大型Excel文件(超过10万行),建议采用以下优化措施:

  • 使用POI的SXSSFWorkbook(流式API)或EasyExcel
  • 设置JVM参数增加内存:-Xms512m -Xmx1024m
  • 分批次处理数据,避免一次性加载全部内容
  • 关闭自动计算公式:workbook.setForceFormulaRecalculation(false)

异常处理

需要处理以下常见异常:

java如何读取excel中的数据

try {
    // 读取操作
} catch (IOException e) {
    System.err.println("文件读取错误: " + e.getMessage());
} catch (InvalidFormatException e) {
    System.err.println("文件格式错误: " + e.getMessage());
} catch (Exception e) {
    System.err.println("其他错误: " + e.getMessage());
}

以上方法可根据项目需求选择,新项目推荐使用Apache POI或EasyExcel,旧版Excel文件处理可考虑JExcelAPI。

标签: 数据java
分享给朋友:

相关文章

vue实现数据翻译

vue实现数据翻译

Vue 数据翻译实现方案 在 Vue 项目中实现数据翻译通常涉及国际化(i18n)或多语言支持,以下是几种常见方法: 使用 vue-i18n 插件 安装 vue-i18n 依赖: npm inst…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…

vue实现数据换行

vue实现数据换行

使用 white-space CSS 属性 在 Vue 中,可以通过 CSS 的 white-space 属性控制文本换行。将样式设置为 white-space: pre-line 或 white-s…

vue如何实现数据

vue如何实现数据

Vue 数据实现方式 Vue 提供了多种方式实现数据管理和响应式更新,核心机制基于响应式系统和状态管理方案。 响应式数据声明 在组件选项中使用 data 函数返回对象,Vue 会自动递归转换属性为响…

vue实现数据分页

vue实现数据分页

Vue 实现数据分页的方法 使用计算属性分页 在 Vue 中,可以利用计算属性对数据进行分页处理。这种方法适用于前端分页,即一次性获取所有数据后在客户端进行分页。 data() { return…

vue实现对表格数据

vue实现对表格数据

实现表格数据展示 在Vue中展示表格数据通常使用<table>标签或第三方组件库(如Element UI/ANT Design)。以下以原生Vue为例: <template>…