java - 使用 POI 在 docx 文件中另一个表的单元格中添加表

标签 java apache-poi docx

我正在使用 POI 生成 docx 文件。我需要创建一个表,其中表的单元格包含另一个表。如何做到这一点?

最佳答案

我也遇到了同样的问题。 我决定“拆分”单元格,而不是将表格插入到 tableCell 中,尽管我无法做到这一点。

因此,我决定创建新的行/列并合并除我想要拆分的行/列处的单元格之外的所有单元格。

为了合并单元格,我决定遵循以下步骤:

要水平/垂直合并,您需要创建 2 个 CTHMerge 并使用 setVal:

  • 一个用于您将保留的单元格 (STMerge.RESTART);
  • 第二个用于合并单元格 (STMerge.CONTINUE);

a) 2x2 表格水平合并示例:

 // First Row
CTHMerge hMerge = CTHMerge.Factory.newInstance();
vmerge.setVal(STMerge.RESTART);
table.getRow(0).getCell(0).getCTTc().getTcPr().setHMerge(hMerge);
table.getRow(1).getCell(0).getCTTc().getTcPr().setHMerge(hMerge);

 // Secound Row cell will be merged/"deleted"
CTHMerge hMerge1 = CTHMerge.Factory.newInstance();
hMerge.setVal(STMerge.CONTINUE);
table.getRow(0).getCell(1).getCTTc().getTcPr().setHMerge(hMerge1);
table.getRow(1).getCell(1).getCTTc().getTcPr().setHMerge(hMerge1);

b) 垂直合并示例(带示例的图像)

// First Row
CTVMerge vmerge = CTVMerge.Factory.newInstance();
vmerge.setVal(STMerge.RESTART);
table.getRow(0).getCell(0).getCTTc().getTcPr().setVMerge(vmerge);
table.getRow(0).getCell(1).getCTTc().getTcPr().setVMerge(vmerge);

 // Secound Row cell will be merged 
CTVMerge vmerge1 = CTVMerge.Factory.newInstance();
vmerge.setVal(STMerge.CONTINUE);
table.getRow(1).getCell(0).getCTTc().getTcPr().setVMerge(vmerge1);
table.getRow(1).getCell(1).getCTTc().getTcPr().setVMerge(vmerge1);

关于java - 使用 POI 在 docx 文件中另一个表的单元格中添加表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19852759/

相关文章:

java - 如何更改 XSSFTextBox 上的字体

python - 如何在 python-docx 中同时应用粗体和斜体?

java - JPanel 位于另一个 JPanel 之上

java - 在 Java 中实现 Creator 类和类本身设计的正确方法是什么?

java - 如何在windows平台上检查JVM运行的jar执行情况

java - 无法打开 Excel 文件。抛出 "Unreadable format"错误

java - Excel Apache POI 打印问题

php - 从 PHP 下载时 Word/Excel 文件损坏

java - 使用 docx4j 将 Docx 转换为 PDF 时文本对齐丢失

java - 读取文本文件(约 90,000 个单词)并尝试将每个单词添加到字符串 ArrayList 中