You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java读取Excel表格数据?(Java新手求助,附尝试代码)

如何用Java读取Excel表格数据(新手友好版)

嘿,作为Java新手能想到用Apache POI来处理Excel,方向完全没错!我来帮你把代码补全,再一步步讲清楚怎么实现,保证你能看明白~

第一步:先搞定依赖(重中之重)

Apache POI是第三方工具库,你得先把它的依赖加到项目里。如果用Maven的话,直接在pom.xml里加这些配置就行:

<!-- 处理 .xls 格式(Excel 97-2003版本) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.5</version>
</dependency>
<!-- 处理 .xlsx 格式(Excel 2007及以后版本) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.5</version>
</dependency>

要是你手动导jar包,直接去Apache POI官网下载对应版本的包就行,但用Maven会省心很多哦。

第二步:完整的读取代码示例

我把你写的代码补全,还加了详细注释,你可以直接复制运行试试:

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

public class ExcelReader {
    public static void main(String[] args) {
        // 替换成你自己的Excel文件路径哦
        String excelFilePath = "C:/test/your_excel_file.xlsx";
        
        // 用try-with-resources自动关闭流,避免资源泄漏(Java7+支持)
        try (FileInputStream fis = new FileInputStream(excelFilePath);
             Workbook workbook = WorkbookFactory.create(fis)) {
            
            // 获取第一个工作表(索引从0开始,也可以用表名获取:workbook.getSheet("Sheet1"))
            Sheet sheet = workbook.getSheetAt(0);
            
            // 遍历工作表里的每一行
            for (Row row : sheet) {
                // 遍历当前行的每一个单元格
                for (Cell cell : row) {
                    // 根据单元格类型,正确获取对应的值
                    String cellValue = switch (cell.getCellType()) {
                        case STRING -> cell.getStringCellValue();
                        case NUMERIC -> {
                            // 先判断是不是日期格式的单元格
                            if (DateUtil.isCellDateFormatted(cell)) {
                                yield cell.getDateCellValue().toString();
                            } else {
                                // 普通数字转字符串,避免出现科学计数法
                                yield String.valueOf(cell.getNumericCellValue());
                            }
                        }
                        case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
                        case FORMULA -> cell.getCellFormula(); // 公式单元格直接返回公式内容
                        default -> ""; // 空单元格或其他类型返回空字符串
                    };
                    
                    // 打印单元格内容,用制表符分隔更整齐
                    System.out.print(cellValue + "\t");
                }
                // 每一行遍历完换行
                System.out.println();
            }
            
        } catch (EncryptedDocumentException | IOException e) {
            // 捕获异常并打印错误信息
            e.printStackTrace();
        }
    }
}

第三步:关键知识点拆解

  • WorkbookFactory.create():这个方法超智能,不管你是.xls还是.xlsx格式的Excel,它都能自动识别并创建对应的Workbook对象,不用你手动区分HSSF和XSSF啦。
  • 单元格类型处理:Excel单元格有字符串、数字、日期、布尔值等多种类型,直接强转很容易出错,所以一定要根据cell.getCellType()分别处理——比如日期类型要先判断是不是格式化过的,数字转字符串要避免出现科学计数法。
  • try-with-resources:Java7+的特性,能自动关闭实现了AutoCloseable接口的资源(比如FileInputStream、Workbook),不用手动写finally关闭,减少代码冗余还能避免资源泄漏。

常见小坑提醒

  • 如果运行时提示找不到POI的类,那肯定是依赖没加对,检查一下pom.xml或者jar包有没有导全。
  • 文件路径一定要写对:Windows系统下路径里的斜杠要用\\或者正斜杠/,不然会报FileNotFoundException。
  • 如果Excel是加密的,WorkbookFactory会抛出EncryptedDocumentException,这时候你需要传入密码才能打开:WorkbookFactory.create(fis, "your-password")。

内容的提问来源于stack exchange,提问作者Sanjana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:52:26