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

时间:2013-11-08 06:18:20

标签: java apache-poi docx

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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。 我没有将表插入tableCell,而是决定" split"细胞,虽然我无法做到。

所以,我决定创建新的行/列并合并除了我要分割的行/列的单元格之外的所有单元格。

为了合并细胞,我决定按照以下步骤进行操作:

要水平/垂直合并,您需要创建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);