当前位置:首页 > Java

如何在java程序中导入excel数据

2026-03-17 20:58:24Java

使用Apache POI库导入Excel数据

Apache POI是Java操作Microsoft Office文件的流行库,支持Excel的.xls.xlsx格式。

确保项目中已添加POI依赖(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文件示例代码:

try (FileInputStream fis = new FileInputStream("data.xlsx");
     XSSFWorkbook workbook = new XSSFWorkbook(fis)) {

    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");
                default -> System.out.print("UNKNOWN\t");
            }
        }
        System.out.println();
    }
}

使用EasyExcel处理大数据量

对于大型Excel文件,阿里巴巴的EasyExcel性能更优,内存占用更低。

如何在java程序中导入excel数据

Maven依赖:

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

监听器模式读取示例:

如何在java程序中导入excel数据

// 定义数据模型
@Data
public class DemoData {
    private String stringData;
    private Double numberData;
    private Date dateData;
}

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

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

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

处理日期和特殊格式

Excel中的日期和自定义格式需要特殊处理:

// 日期格式处理
if (DateUtil.isCellDateFormatted(cell)) {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.print(sdf.format(cell.getDateCellValue()));
}

// 公式计算
if (cell.getCellType() == CellType.FORMULA) {
    System.out.print(cell.getNumericCellValue());
}

异常处理和性能优化

确保添加适当的异常处理:

try {
    // 读取操作
} catch (EncryptedDocumentException e) {
    System.err.println("加密文档无法读取");
} catch (IOException e) {
    System.err.println("文件读取错误: " + e.getMessage());
}

对于大数据文件:

  • 使用SAX模式解析(POI的XSSF和EasyExcel都支持)
  • 限制内存中保留的行数
  • 考虑分批次处理数据

标签: 程序数据
分享给朋友:

相关文章

vue实现重置表格数据

vue实现重置表格数据

重置表格数据的方法 在Vue中重置表格数据通常涉及清空或重新初始化数据绑定的数组或对象。以下是几种常见实现方式: 直接重置数据源 对于基于数组的表格数据,可以直接将数据数组重置为空或初始值:…

vue怎么实现数据

vue怎么实现数据

Vue 数据实现方式 Vue 提供了多种方式来实现数据的响应式绑定和管理,核心是通过数据驱动视图的更新。 响应式数据声明 在 Vue 组件中,可以通过 data 选项声明响应式数据。这些数据会被 V…

vue实现数据展示

vue实现数据展示

Vue 数据展示的实现方法 在 Vue 中展示数据通常通过数据绑定、指令和组件等方式实现。以下是几种常见的实现方式: 数据绑定与插值表达式 使用双大括号语法 {{ }} 可以直接在模板中展示数据:…

vue实现数据搜索

vue实现数据搜索

实现数据搜索的基本思路 在Vue中实现数据搜索功能通常涉及以下几个核心步骤:监听用户输入、过滤数据列表、动态更新视图。以下是具体实现方法: 监听搜索输入 使用v-model双向绑定搜索框输入值,配合…

vue实现数据拼接

vue实现数据拼接

Vue 实现数据拼接的方法 在 Vue 中实现数据拼接可以通过多种方式完成,以下是一些常见的方法: 使用计算属性(Computed Properties) 计算属性是 Vue 中处理数据拼接的理想选…

vue双向数据怎么实现

vue双向数据怎么实现

Vue 双向数据绑定的实现 Vue 的双向数据绑定主要通过 v-model 指令实现,结合数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式完成数据与视图的同步更新…