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

使用Java生成的.xlsx文件无法用MS Excel打开,提示格式/扩展名无效

问题原因分析

你遇到的问题根源其实很清晰:HSSFWorkbook是Apache POI专门用来处理旧版Excel格式(.xls,对应Excel 97-2003版本)的类,它生成的文件内容本质是.xls格式,但你给文件命名成了.xlsx扩展名。MS Excel会通过扩展名判断文件格式,当实际内容和扩展名不匹配时,就会弹出“格式或扩展名无效”的错误提示。

两种解决方案
  • 方案一:生成标准.xlsx格式文件
    如果你确实需要生成.xlsx格式(适配Excel 2007及以后版本),请替换为XSSFWorkbook类(这是POI中对应OOXML格式的实现),修正后的代码如下:

    XSSFWorkbook workBook = new XSSFWorkbook();
    String file = "D:/sample.xlsx";
    FileOutputStream fos = new FileOutputStream(file);
    workBook.write(fos);
    fos.flush();
    fos.close(); // 建议加上流关闭操作,避免资源占用泄漏
    

    注意:使用XSSFWorkbook需要确保你的项目依赖中包含poi-ooxml相关的jar包(如果用Maven/Gradle管理依赖,要引入对应的依赖项)。

  • 方案二:保持.xls格式
    如果你不需要.xlsx格式,只是文件名写错了,直接把文件名的扩展名改成.xls即可:

    HSSFWorkbook workBook = new HSSFWorkbook();
    String file = "D:/sample.xls"; // 修正扩展名
    FileOutputStream fos = new FileOutputStream(file);
    workBook.write(fos);
    fos.flush();
    fos.close();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:51:07