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

如何使用POI在.doc文档中创建表格?代码无法生成目标表格求助

解决Apache POI创建.doc表格失败的问题

嘿,我瞅你用POI操作旧版Word(.doc)表格的时候踩坑了,代码跑不起来没法生成目标表格是吧?我帮你捋捋问题出在哪,再给你调整好的代码。

首先说下你原代码里的几个小问题:

  • range.insertTableBefore的参数顺序搞反啦!HWPF里这个方法是先传行数,再传列数,你写的(short) columns, rows会让表格的行列颠倒,结构直接错了。
  • 往单元格里写内容的方式不太对,par.insertBefore有时候没法正确把文本放到单元格里,用CharacterRun来添加文本更靠谱。
  • 你最后保存文件的路径还没写完,得确保路径完整才能正常输出文档。

给你修正后的完整代码,直接就能用:

private static void insertTable() throws FileNotFoundException, IOException { 
    // 打开源文档
    HWPFDocument doc = new HWPFDocument(new FileInputStream("/home/ikadmin/Downloads/in.doc")); 
    int rows = 3, columns = 3; 
    Range range = doc.getRange(); 

    // 注意参数顺序:行数在前,列数在后
    Table table = range.insertTableBefore(rows, (short) columns); 

    for (int rowIdx = 0; rowIdx < table.numRows(); rowIdx++) { 
        TableRow row = table.getRow(rowIdx); 
        for (int colIdx = 0; colIdx < row.numCells(); colIdx++) { 
            TableCell cell = row.getCell(colIdx); 
            Paragraph par = cell.getParagraph(0); 
            // 创建CharacterRun来添加文本,确保内容正确放入单元格
            CharacterRun run = par.createCharacterRun();
            run.setText("" + (rowIdx * columns + colIdx));
        } 
    } 

    // 完整的输出路径,替换成你自己的路径
    String newFilePath = "/home/ikadmin/Downloads/out.doc";
    // 保存修改后的文档
    try (FileOutputStream out = new FileOutputStream(newFilePath)) {
        doc.write(out);
    } finally {
        doc.close();
    }
}

你试试这段代码,应该就能生成你想要的3×3表格啦,每个单元格会按顺序填充0-8的数字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:13:17