当前位置:首页 > 院校库 > java读取excel

java读取excel

shiwaishuzidu2025年07月16日 16:26:26院校库208

Java开发中,读取Excel文件是一项常见的任务,尤其在数据处理、报表生成等场景中,以下是关于Java读取Excel的详细指南,涵盖主流方法、代码示例及注意事项。

java读取excel

主流方法对比

方法 支持格式 适用场景 优点 缺点
Apache POI .xls/.xlsx 通用性高、定制性强 功能全面,社区活跃,支持复杂操作 大文件性能差,内存占用高
EasyExcel .xlsx 大数据量处理 内存低,速度快,支持流式读取 功能略少,仅支持2007+版本
JXL .xls 老旧项目兼容 简单易用,轻量级 已停止维护,不支持.xlsx
第三方API 多种 云端集成应用 简化开发,自动兼容多格式 依赖网络,需付费(部分服务)

Apache POI详解

依赖配置

在Maven项目中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version> <!-最新版本号需查阅官网 -->
</dependency>

基础代码示例

import org.apache.poi.ss.usermodel.;
import java.io.FileInputStream;
import java.io.IOException;
public class ExcelReader {
    public static void main(String[] args) throws IOException {
        // 打开Excel文件
        try (FileInputStream fis = new FileInputStream("data.xlsx");
             Workbook workbook = WorkbookFactory.create(fis)) {
            // 获取第一个工作表
            Sheet sheet = workbook.getSheetAt(0);
            // 遍历行与单元格
            for (Row row : sheet) {
                for (Cell cell : row) {
                    System.out.print(getCellValue(cell) + "\t");
                }
                System.out.println();
            }
        }
    }
    // 处理单元格类型转换
    private static String getCellValue(Cell cell) {
        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellValue();
            case NUMERIC:
                return String.valueOf(cell.getNumericCellValue());
            case BOOLEAN:
                return String.valueOf(cell.getBooleanCellValue());
            case FORMULA:
                return cell.getCellFormula(); // 返回公式本身
            case BLANK:
                return "";
            default:
                return "未知类型";
        }
    }
}

核心步骤

  1. 导入依赖:确保poi-ooxml包含在项目中。
  2. 获取输入流:通过FileInputStream读取文件。
  3. 创建Workbook:使用WorkbookFactory.create()自动识别.xls/.xlsx格式。
  4. 遍历结构:按Sheet -> Row -> Cell层级逐层解析。
  5. 关闭资源:使用try-with-resources确保文件流和Workbook关闭。

优化与注意事项

  • 大文件处理:使用SXSSFWorkbook实现流式读取,减少内存占用。
  • 日期与数字转换:通过DataFormatter统一格式化输出。
  • 异常处理:捕获IOException并处理文件不存在、格式错误等问题。

EasyExcel实践

依赖配置

在Spring Boot项目中添加:

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

数据模型定义

import lombok.Data;
@Data
public class ExcelData {
    private String date;      // 对应Excel第一列
    private Integer userNum;  // 对应Excel第二列
}

读取代码示例

import com.alibaba.excel.EasyExcel;
import java.io.File;
import java.util.List;
public class EasyExcelReader {
    public static void main(String[] args) {
        // 读取Excel文件
        String filePath = "path/to/file.xlsx";
        List<ExcelData> dataList = EasyExcel.read(filePath)
                .head(ExcelData.class)
                .sheet()
                .doReadSync();
        // 输出数据
        dataList.forEach(data -> 
            System.out.println(data.getDate() + ", " + data.getUserNum()));
    }
}

核心优势

  • 低内存消耗:基于SAX解析,适合百万级数据。
  • 监听器模式:通过ReadListener实现边读边处理。
  • 快速集成:无需复杂配置,依赖自动装配。

常见问题与解决方案

数字格式显示为科学计数法

原因:Excel中的数字默认以数值类型存储,过长时会转为科学计数法。
解决:使用DataFormatter或设置单元格格式为TEXT

java读取excel

日期解析错误

原因:POI默认将日期视为数值(如0)。
解决:使用DateUtil.isCellDateFormatted()判断后转换:

if (DateUtil.isCellDateFormatted(cell)) {
    return new SimpleDateFormat("yyyy-MM-dd").format(cell.getDateCellValue());
}

FAQs

如何判断Excel文件是.xls还是.xlsx?

:通过文件扩展名或WorkbookFactory.create()自动识别,POI内部会根据魔数(文件头特征)区分格式。

EasyExcel能否处理合并单元格?

:EasyExcel主要关注数据读取,合并单元格需通过CellRowSpanColSpan属性判断,但建议优先使用POI

java读取excel

版权声明:本文由 数字独教育 发布,如需转载请注明出处。

本文链接:https://www.shuzidu.com/zhichangjineng/5651.html

标签: vaExcelApache
分享给朋友:

“java读取excel” 的相关文章

excel如何筛选重复项

excel如何筛选重复项

Excel中处理大量数据时,筛选重复项是一个常见且重要的操作,无论是为了数据清洗、分析还是确保数据的唯一性,掌握有效的筛选方法都能显著提高工作效率,下面将详细介绍几种在Excel中筛选重复项的方法,包括条件格式筛选、高级筛选、COUNTIF...

excel表格怎么调整表格大小

excel表格怎么调整表格大小

Excel中调整表格大小是一项常用的操作,无论是为了让数据展示更加清晰美观,还是为了适应不同的打印需求等,掌握其调整方法都很有必要,以下将详细介绍在Excel中调整表格大小的多种方式: 调整行高 手动拖动法:将鼠标指针移到需要调整行...

财务记账excel表格

财务记账excel表格

现代企业管理和个人财务管理中,财务记账Excel表格扮演着至关重要的角色,它不仅能够帮助我们清晰地记录每一笔收支,还能通过强大的数据分析功能,为我们提供决策支持,下面,我们将详细探讨如何创建和使用财务记账Excel表格,以及一些实用的技巧和...

excel自动求和

excel自动求和

Excel中,自动求和是一项非常实用的功能,它能够帮助用户快速对一列或一行中的数字进行求和操作,无论是处理个人财务数据、企业销售报表还是学术研究中的数据统计,掌握Excel自动求和的方法都能极大地提高工作效率,下面将详细介绍几种常用的Exc...

Excel基础教程

Excel基础教程

cel作为一款功能强大的电子表格软件,广泛应用于数据分析、财务管理、统计计算等多个领域,无论是职场人士还是学生,掌握Excel的基础操作都能显著提升工作效率和数据处理能力,以下是一份详细的Excel基础教程,帮助初学者快速入门并掌握核心技能...

excel表格中如何换行

excel表格中如何换行

Excel表格中,换行操作是一个常见且实用的技能,无论是为了提高数据的可读性,还是为了满足特定的格式要求,掌握如何在单元格内进行换行都非常重要,下面,我们将详细介绍在Excel表格中实现换行的各种方法,并通过实例和表格来展示具体操作步骤。...