当前位置:首页 > 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如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…

如何搭建java环境

如何搭建java环境

下载JDK 访问Oracle官网或OpenJDK官网下载适合操作系统的JDK安装包。推荐选择长期支持版本(如JDK 17或JDK 21)。 安装JDK 运行下载的安装程序,按照向导完成安装。注意…

php 实现 java md5加密

php 实现 java md5加密

PHP 实现 Java MD5 加密 Java 和 PHP 的 MD5 加密结果可能存在差异,主要由于字符编码和输出格式的不同。以下是确保 PHP 与 Java MD5 加密结果一致的方法。 确保字…

java如何入门

java如何入门

学习基础语法 从Java的基础语法开始,包括变量、数据类型、运算符、控制结构(if-else、for循环、while循环)等。可以通过官方文档或入门教程学习。 安装开发环境 下载并安装JDK(J…