当前位置:首页 > Java

java如何读取excel数据

2026-03-03 09:25:33Java

读取Excel数据的方法

Java读取Excel数据可以通过多种库实现,常见的有Apache POI、EasyExcel等。以下是具体实现方式:

使用Apache POI读取Excel

Apache POI是处理Microsoft Office文件格式的Java库,支持.xls和.xlsx格式。

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

public class ExcelReader {
    public static void readExcel(String filePath) throws IOException {
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = new XSSFWorkbook(fis); // 对于.xlsx文件
        // 对于.xls文件使用: Workbook workbook = new HSSFWorkbook(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();
        }
        workbook.close();
        fis.close();
    }
}

使用EasyExcel读取Excel

EasyExcel是阿里开源的Excel处理工具,内存消耗低,适合大数据量。

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import java.util.ArrayList;
import java.util.List;

public class ExcelReader {
    public static void readExcel(String filePath) {
        List<Object> dataList = new ArrayList<>();
        EasyExcel.read(filePath, new ReadListener<Object>() {
            @Override
            public void invoke(Object data, AnalysisContext context) {
                dataList.add(data);
                System.out.println(data);
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                System.out.println("读取完成");
            }
        }).sheet().doRead();
    }
}

处理大数据量的优化方法

当处理大型Excel文件时,需要注意内存优化:

java如何读取excel数据

  • 使用事件模型(SAX方式)而非DOM方式
  • 分批处理数据,避免一次性加载全部数据
  • 对于Apache POI,可以使用SXSSFWorkbook处理.xlsx文件
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileInputStream;

public class LargeExcelReader {
    public static void readLargeExcel(String filePath) throws IOException {
        FileInputStream fis = new FileInputStream(filePath);
        Workbook workbook = new SXSSFWorkbook(new XSSFWorkbook(fis), 100); // 设置rowAccessWindowSize
        // 后续读取逻辑与普通Workbook相同
    }
}

注意事项

  • 不同Excel版本(.xls和.xlsx)需要使用不同的POI类处理
  • 读取时注意单元格数据类型,避免类型转换错误
  • 资源使用后要及时关闭,防止内存泄漏
  • 对于复杂格式的Excel文件,可能需要特殊处理合并单元格等特性

以上方法涵盖了Java读取Excel的主要场景,可以根据具体需求选择合适的库和实现方式。

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

相关文章

如何查看java版本

如何查看java版本

查看 Java 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -ve…

java如何下载

java如何下载

下载Java的步骤 访问Oracle官方网站或OpenJDK项目页面下载Java开发工具包(JDK)。Oracle JDK适用于商业用途,OpenJDK为开源版本。 打开浏览器,进入Oracle J…

java如何创建类

java如何创建类

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

java如何输入字符串

java如何输入字符串

使用 Scanner 类 在 Java 中,可以通过 java.util.Scanner 类来输入字符串。以下是一个示例代码: import java.util.Scanner; public c…

如何编写java

如何编写java

编写Java程序的基本步骤 安装Java开发工具包(JDK),确保系统环境变量配置正确。可以从Oracle官网下载最新版本的JDK并进行安装。 选择一个合适的集成开发环境(IDE),如Eclipse…

java如何导包

java如何导包

导入包的方法 在Java中,导入包(package)可以通过import语句实现,用于引入其他类或包中的功能。以下是几种常见的导包方式: 导入单个类 import java.util.ArrayL…