当前位置:首页 > Java

java如何导入excel数据

2026-02-05 03:13:30Java

导入Excel数据的常用方法

在Java中导入Excel数据通常使用Apache POI或JExcelAPI等库。以下是几种常见的方法:

使用Apache POI读取Excel文件

Apache POI支持.xls和.xlsx格式的Excel文件。需要添加以下依赖:

<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文件的示例代码:

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

public class ExcelReader {
    public static void readExcel(String filePath) {
        try (Workbook workbook = WorkbookFactory.create(new FileInputStream(filePath))) {
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                for (Cell cell : row) {
                    System.out.print(cell.toString() + "\t");
                }
                System.out.println();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

使用EasyExcel处理大数据量

EasyExcel是阿里巴巴开源的Excel处理工具,适合处理大文件:

java如何导入excel数据

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

读取示例:

import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;

public class EasyExcelReader {
    public static void readExcel(String filePath) {
        List<Object> data = new ArrayList<>();
        EasyExcel.read(filePath)
                .sheet()
                .doReadSync(data);
        data.forEach(System.out::println);
    }
}

使用JExcelAPI读取旧格式Excel

JExcelAPI适合处理.xls格式文件:

java如何导入excel数据

<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

读取示例:

import jxl.Sheet;
import jxl.Workbook;
import java.io.File;

public class JExcelReader {
    public static void readExcel(String filePath) {
        try {
            Workbook workbook = Workbook.getWorkbook(new File(filePath));
            Sheet sheet = workbook.getSheet(0);
            for (int i = 0; i < sheet.getRows(); i++) {
                for (int j = 0; j < sheet.getColumns(); j++) {
                    System.out.print(sheet.getCell(j, i).getContents() + "\t");
                }
                System.out.println();
            }
            workbook.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

处理不同类型单元格数据

读取Excel时需要处理不同类型的单元格:

switch (cell.getCellType()) {
    case STRING:
        System.out.print(cell.getStringCellValue());
        break;
    case NUMERIC:
        if (DateUtil.isCellDateFormatted(cell)) {
            System.out.print(cell.getDateCellValue());
        } else {
            System.out.print(cell.getNumericCellValue());
        }
        break;
    case BOOLEAN:
        System.out.print(cell.getBooleanCellValue());
        break;
    case FORMULA:
        System.out.print(cell.getCellFormula());
        break;
    default:
        System.out.print("");
}

性能优化建议

处理大文件时建议使用流式读取:

EasyExcel.read(filePath, new AnalysisEventListener<Object>() {
    @Override
    public void invoke(Object data, AnalysisContext context) {
        // 逐行处理数据
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 所有数据解析完成
    }
}).sheet().doRead();

这些方法覆盖了Java中处理Excel文件的主要场景,可以根据具体需求选择合适的库和实现方式。

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

相关文章

vue实现数据互通

vue实现数据互通

Vue 实现数据互通的方法 Vue 提供了多种方式实现组件间的数据互通,以下是几种常见的方法: 父子组件通信 Props 传递数据 父组件通过 props 向子组件传递数据。 <!-- 父组…

如何配置java环境

如何配置java环境

下载JDK安装包 访问Oracle官网或OpenJDK官网,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。下载完成后,运行安装程序并按照提示完成安装。 设置环境变量 右键…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

java如何打印数组

java如何打印数组

打印数组的方法 在Java中,打印数组有多种方式,以下是几种常见的方法: 使用Arrays.toString()方法 这种方法适用于一维数组,可以快速将数组转换为字符串形式输出: int[] a…

java如何创建测试类

java如何创建测试类

创建测试类的基本步骤 在Java中创建测试类通常使用JUnit框架,以下是具体方法: 安装JUnit依赖 对于Maven项目,在pom.xml中添加依赖: <dependency>…

vue实现数据动态

vue实现数据动态

Vue 实现数据动态绑定的方法 Vue.js 的核心特性之一是数据绑定,通过响应式系统实现数据的动态更新。以下是几种常见的实现方式: 双向数据绑定(v-model) 使用 v-model 指令可以实…