当前位置:首页 > Java

java如何导入excel数据

2026-03-03 14:28:59Java

使用Apache POI库导入Excel数据

Apache POI是Java处理Microsoft Office文档的流行库,支持Excel文件的读写操作。

确保项目中包含Apache 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>

读取Excel文件的基本示例代码:

import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;

public class ExcelReader {
    public static void readExcel(String filePath) {
        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = WorkbookFactory.create(fis)) {

            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                for (Cell cell : row) {
                    switch (cell.getCellType()) {
                        case STRING:
                            System.out.print(cell.getStringCellValue() + "\t");
                            break;
                        case NUMERIC:
                            System.out.print(cell.getNumericCellValue() + "\t");
                            break;
                        case BOOLEAN:
                            System.out.print(cell.getBooleanCellValue() + "\t");
                            break;
                        default:
                            System.out.print("-\t");
                    }
                }
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用EasyExcel库处理大数据量

EasyExcel是阿里巴巴开源的Excel处理工具,特别适合处理大数据量情况。

添加EasyExcel依赖:

java如何导入excel数据

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

定义数据模型类:

@Data
public class DemoData {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年龄")
    private Integer age;

    @ExcelProperty("邮箱")
    private String email;
}

使用监听器模式读取Excel:

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("所有数据解析完成");
    }
}

public class ReadExcel {
    public static void main(String[] args) {
        String fileName = "demo.xlsx";
        EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
    }
}

处理不同Excel版本

对于.xls格式(HSSF):

java如何导入excel数据

Workbook workbook = new HSSFWorkbook(new FileInputStream("old.xls"));

对于.xlsx格式(XSSF):

Workbook workbook = new XSSFWorkbook(new FileInputStream("new.xlsx"));

使用WorkbookFactory自动判断文件类型:

Workbook workbook = WorkbookFactory.create(new File("file.xlsx"));

处理日期和特殊格式

解析日期单元格:

if (DateUtil.isCellDateFormatted(cell)) {
    Date date = cell.getDateCellValue();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.print(sdf.format(date));
}

处理公式单元格:

if (cell.getCellType() == CellType.FORMULA) {
    FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator();
    CellValue cellValue = evaluator.evaluate(cell);
    switch (cellValue.getCellType()) {
        case NUMERIC:
            System.out.print(cellValue.getNumberValue());
            break;
        case STRING:
            System.out.print(cellValue.getStringValue());
            break;
    }
}

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

相关文章

vue数据劫持实现

vue数据劫持实现

Vue 数据劫持实现原理 Vue 的数据劫持主要通过 Object.defineProperty 或 Proxy 实现,用于监听对象属性的变化并触发更新。以下是核心实现方式: 基于 Object.d…

java如何连接数据库

java如何连接数据库

Java连接数据库的方法 Java连接数据库通常使用JDBC(Java Database Connectivity)技术,以下是具体步骤和示例代码。 加载数据库驱动 在连接数据库之前,需要加载对应的…

如何编译java

如何编译java

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

win7如何配置java环境变量

win7如何配置java环境变量

下载并安装Java 从Oracle官网下载适合的Java Development Kit (JDK)安装包,选择与系统位数(32位或64位)匹配的版本。运行安装程序,按照提示完成安装,默认路径通常为C…

vue实现数据劫持

vue实现数据劫持

Vue 数据劫持的实现原理 Vue 的数据劫持主要通过 Object.defineProperty 或 Proxy 实现,用于监听数据变化并触发视图更新。 使用 Object.definePrope…

vue实现分页数据

vue实现分页数据

实现分页数据的基本思路 在Vue中实现分页数据通常需要结合后端API和前端分页组件。后端负责处理数据分页逻辑,前端负责展示分页控件和当前页数据。 后端API要求 后端API需要支持分页参数,通常包括…