当前位置:首页 > 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依赖:

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

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

处理公式单元格:

java如何导入excel数据

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(Vue 2)或 Proxy(Vue 3)对数据进行劫持,结合发布-订阅模式实现依…

如何运行java项目

如何运行java项目

运行Java项目的步骤 确保Java环境已安装 在运行Java项目前,需确认系统已安装Java Development Kit(JDK)。通过命令行输入java -version和javac -ver…

java如何避免死锁

java如何避免死锁

避免死锁的方法 固定顺序获取锁 确保所有线程按照相同的顺序获取多个锁。例如,若需要获取锁A和锁B,所有线程必须先获取A再获取B,避免交叉依赖导致的死锁。这种方式破坏了“循环等待”条件。 使用锁超时机…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…

vue 实现数据分页

vue 实现数据分页

实现数据分页的基本思路 在Vue中实现数据分页通常需要结合前端分页逻辑和后端API支持。前端分页适合数据量较小的情况,后端分页适合大数据量场景。 前端分页实现 创建一个计算属性来分割当前页数据:…

vue实现数据添加

vue实现数据添加

在 Vue 中实现数据添加 Vue 提供了多种方式来实现数据的添加操作,可以通过组件的数据绑定、表单处理以及状态管理等方式完成。以下是几种常见的实现方法: 使用 v-model 绑定表单数据 通过…