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

使用POI创建XSSFWorkbook时出现NoClassDefFoundError报错求助

无Maven环境下实现Java写Excel的解决方案

方案1:补全依赖解决POI运行报错

你遇到的org/apache/logging/log4j/LogManager报错是因为高版本POI默认依赖Log4j2日志框架,手动导入jar包时没有补全所有依赖导致的。你不需要用Maven,只需按以下要求下载所有必需jar包导入项目即可:

  • 下载同一版本的POI核心包:poi.jar、poi-ooxml.jar、poi-ooxml-lite.jar(仅写入需求用lite包即可,无需full包)
  • 下载对应POI版本要求的Log4j2包:log4j-api.jar、log4j-core.jar
  • 下载POI必需的公共依赖包:commons-collections4.jar、commons-io.jar、commons-math3.jar、xmlbeans.jar

所有jar包下载完成后,放入项目的依赖目录,添加到项目构建路径后即可正常运行POI代码。极简写入示例如下:

// 写入单个数字到Excel示例
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("工作表1");
sheet.createRow(0).createCell(0).setCellValue(12345); // 第一行第一列写入数字12345
try (FileOutputStream out = new FileOutputStream("测试文件.xlsx")) {
    workbook.write(out);
} finally {
    workbook.close();
}

注意:不要混用不同大版本的POI相关依赖,否则会出现类冲突报错。

方案2:零依赖替代方案(推荐初学者使用)

如果你仅需要写入数字等简单内容,完全不需要引入POI等重型框架,直接生成CSV格式文件即可,CSV文件可以直接用Excel打开,完全满足你的需求,不需要任何第三方依赖,示例代码如下:

try (FileWriter writer = new FileWriter("测试文件.csv")) {
    // 每行内容用逗号分隔,换行就是新的行
    writer.write("数值列\n"); // 表头行
    writer.write("123\n"); // 第一行写入数字123
    writer.write("456\n"); // 第二行写入数字456
} catch (IOException e) {
    e.printStackTrace();
}

生成的csv文件直接双击就能用Excel打开,写入逻辑简单,完全不会出现依赖缺失报错。

内容的提问来源于stack exchange,提问作者Jordy van Dongen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:03