当前位置:首页 > 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文件时,需要注意内存优化:

  • 使用事件模型(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如何读取excel数据

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

相关文章

Vue实现数据检验

Vue实现数据检验

Vue 数据校验的实现方法 在Vue中实现数据校验可以通过多种方式,以下是几种常见的方法: 使用内置指令 Vue提供了一些内置指令用于简单的数据校验,例如v-model结合v-bind可以实现基本的…

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心是利用 Object.defineProperty(Vue 2)或 Proxy(Vue 3)对数据进行劫持,结合发布-订阅模式实现依…

java如何运行

java如何运行

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

java如何编译

java如何编译

编译Java程序的基本步骤 安装JDK(Java Development Kit)并配置环境变量。确保javac和java命令可在命令行中运行。JDK是编译和运行Java程序的必备工具。 创建Jav…

如何删除java

如何删除java

卸载 Java 的步骤 Windows 系统: 打开控制面板,选择“程序和功能”或“卸载程序”,在列表中找到 Java 相关条目(如“Java Runtime Environment”或“Java D…

vue实现数据联动

vue实现数据联动

Vue 数据联动实现方法 数据联动通常指多个表单或组件之间基于用户输入动态更新内容。Vue 提供了多种方式实现这一功能。 使用 v-model 和计算属性 通过 v-model 绑定数据,利用计算…