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

使用Apache POI Java读取Excel时工作表数量异常问题求助

解决Apache POI读取Excel时工作表数量为0的问题

嘿,我一眼就发现问题所在了!你遇到的这个“工作表数量为0,访问索引0报错”的问题,根源是你根本没把要读取的Excel文件流传入HSSFWorkbook。

先看看你代码里的关键错误行:

HSSFWorkbook wb = new HSSFWorkbook();

你现在是直接新建了一个空的工作簿对象,完全没有关联你前面打开的fs文件输入流,自然读不到test.xlsx里的3个工作表,所以wb.getNumberOfSheets()返回0,访问索引0的工作表就会抛出那个IllegalArgumentException。

修正后的代码

把文件流传入HSSFWorkbook的构造方法,同时补充一些资源管理和格式兼容的优化:

// 推荐用try-with-resources自动关闭流,避免资源泄漏
try (FileInputStream fs = new FileInputStream(new File("C:/Users/TO124415/Desktop/test.xlsx"))) {
    // 注意:HSSFWorkbook对应xls格式,如果你的文件是xlsx,应该用XSSFWorkbook
    // 也可以用WorkbookFactory创建通用实例,兼容两种格式
    // Workbook wb = WorkbookFactory.create(fs);
    HSSFWorkbook wb = new HSSFWorkbook(fs);
    int number = wb.getNumberOfSheets();
    System.out.println("工作表数量:" + number);
    
    HSSFSheet hs = wb.getSheetAt(0);
    FormulaEvaluator form = wb.getCreationHelper().createFormulaEvaluator();
    
    // 先判断工作表和行是否为空,避免空指针
    if (hs != null) {
        for (Row rw : hs) {
            for (Cell cell : rw) {
                switch (form.evaluateInCell(cell).getCellType()) {
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.println(cell.getNumericCellValue());
                        break; // 别忘了加break,不然会执行后续case
                    case Cell.CELL_TYPE_STRING:
                        System.out.println(cell.getStringCellValue());
                        break;
                }
            }
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

额外注意点

  • 文件格式匹配:HSSFWorkbook仅支持旧版的.xls格式Excel文件,如果你要读取的是.xlsx(新版Office格式),请改用XSSFWorkbook,或者使用WorkbookFactory.create(fs)来自动适配格式,更灵活。
  • 空指针防护:读取行和单元格时最好先判断是否为null,避免因Excel中存在空白行/单元格导致的空指针异常。
  • switch的break:你原来的switch代码里没有加break,会导致一个case执行完后继续执行下一个case,这会让输出结果混乱,记得补上。

你原来的报错信息:

Exception in thread "main" java.lang.IllegalArgumentException: Sheet index (0) is out of range (no sheets)

就是因为空工作簿没有任何工作表,所以访问索引0自然越界啦,修正后应该就能正常读取到3个工作表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:42:35