1

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

4

1 回答 1

0

我有同样的问题。我决定“拆分”单元格,而不是在 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);
于 2016-12-15T23:52:49.217 回答