如何使用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
相关产品推荐
相关产品推荐

