我正在使用 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/