当前位置:首页 > 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处理工具,适合大数据量读取,内存消耗低。

java如何读取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)的轻量级库。

java如何读取excel中的数据

添加依赖

<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)

异常处理

需要处理以下常见异常:

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.js 提供了多种方式实现数据绑定,包括双向绑定、单向绑定以及动态数据绑定。以下是几种常见的实现方式: 双向数据绑定(v-model) 双向数据绑定通常用于表单元…

vue实现表格读取数据

vue实现表格读取数据

Vue 实现表格数据读取 在 Vue 中实现表格数据读取通常涉及以下关键步骤: 数据绑定与表格渲染 通过 v-for 指令动态渲染表格行,数据通常存储在组件的 data 或 Vuex 状态中:…

如何查看java版本

如何查看java版本

查看 Java 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -ve…

java如何编程

java如何编程

Java编程基础 Java是一种面向对象的编程语言,广泛应用于企业级开发、移动应用(Android)等领域。以下是Java编程的核心步骤和示例。 环境搭建 安装JDK 从Oracle官网下载适…

java如何学习

java如何学习

学习Java的有效方法 理解基础概念 Java是一门面向对象的编程语言,掌握基础概念如变量、数据类型、运算符、控制语句(if-else、循环)是必要的。面向对象的核心概念包括类、对象、继承、多态和封装…

vue实现数据删除

vue实现数据删除

Vue 实现数据删除的方法 在 Vue 中删除数据通常涉及操作数组或对象,并结合响应式更新。以下是几种常见实现方式: 从数组中删除数据 使用 splice 方法删除数组中的指定项: methods…