当前位置:首页 > Java

java 如何导入excel

2026-02-04 21:10:00Java

导入Excel的常用方法

使用Apache POI库处理Excel文件是最常见的方式。POI支持.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>

读取Excel文件示例代码

处理.xlsx文件的代码示例:

try (FileInputStream file = new FileInputStream("input.xlsx");
     Workbook workbook = new XSSFWorkbook(file)) {

    Sheet sheet = workbook.getSheetAt(0);
    for (Row row : sheet) {
        for (Cell cell : row) {
            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();
    }
} catch (IOException e) {
    e.printStackTrace();
}

使用EasyExcel处理大数据量

对于大型Excel文件,推荐使用阿里开源的EasyExcel,其采用流式读取降低内存消耗。添加依赖:

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

监听器模式读取示例:

@Slf4j
public class DemoDataListener implements ReadListener<DemoData> {
    @Override
    public void invoke(DemoData data, AnalysisContext context) {
        log.info("读取到数据: {}", data);
    }
}

// 调用方式
EasyExcel.read("largeFile.xlsx", DemoData.class, new DemoDataListener()).sheet().doRead();

数据转换与校验

处理数据时建议进行类型校验:

public Object getCellValue(Cell cell) {
    return switch (cell.getCellType()) {
        case NUMERIC -> 
            DateUtil.isCellDateFormatted(cell) ? 
                cell.getDateCellValue() : 
                cell.getNumericCellValue();
        case STRING -> cell.getStringCellValue().trim();
        case BOOLEAN -> cell.getBooleanCellValue();
        case FORMULA -> cell.getCellFormula();
        default -> null;
    };
}

异常处理建议

增加健壮性处理:

  • 文件存在性检查:Files.exists(Paths.get(filePath))
  • 空单元格处理:CellType.BLANK
  • 内存控制:对于大文件使用SXSSFWorkbook或EasyExcel
  • 编码处理:明确指定文件编码格式

性能优化方案

大规模数据导入时:

java 如何导入excel

  1. 采用分批次读取策略
  2. 使用事件驱动模型(如SAX解析器)
  3. 避免在内存中保留全部数据
  4. 考虑使用数据库批量插入操作
// 使用SXSSFWorkbook示例
try (SXSSFWorkbook workbook = new SXSSFWorkbook(100)) {
    Sheet sheet = workbook.createSheet();
    // 写入时自动刷新临时文件
    for(int i=0; i<100000; i++){
        Row row = sheet.createRow(i);
        row.createCell(0).setCellValue("Data "+i);
        if(i%100==0) {
            ((SXSSFSheet)sheet).flushRows(100);
        }
    }
}

标签: javaexcel
分享给朋友:

相关文章

如何编写java程序

如何编写java程序

安装开发环境 下载并安装JDK(Java Development Kit),推荐从Oracle官网或OpenJDK获取最新版本。安装完成后配置环境变量,确保JAVA_HOME和PATH正确设置。 选…

如何编译java文件

如何编译java文件

安装JDK 确保系统已安装Java Development Kit(JDK)。可通过命令行输入 javac -version 和 java -version 验证。若未安装,需从Oracle或Open…

vue实现java登录注册

vue实现java登录注册

实现 Vue 与 Java 后端的登录注册功能 前端 Vue 部分 安装必要的依赖(如 axios 用于 HTTP 请求): npm install axios 创建登录表单组件(Login.vue…

react如何与java配合

react如何与java配合

React 与 Java 配合的常见方式 React 作为前端框架,通常与 Java 后端通过 RESTful API 或 GraphQL 进行交互。以下是几种常见的配合方式: RESTful AP…

php 实现 java md5

php 实现 java md5

在 PHP 中实现与 Java 相同的 MD5 哈希算法,关键在于确保编码和输出格式的一致性。以下是具体实现方法和注意事项: 确保字符串编码一致 Java 的 String.getBytes() 默…

java实现php

java实现php

Java 实现 PHP 功能的方法 在 Java 中实现 PHP 的功能通常涉及以下几个方面:字符串处理、Web 开发、数据库操作等。以下是几种常见需求的实现方法。 字符串处理 PHP 中的字符串处…