Aspose word java 怎么样才能实现这种表格的创建

就是我的表格有多行,前几行要设置标题重复,内容不自动调整,然后这几行单元格数量又不一致,宽度也不一致,请问这种能够实现吗
重复.docx (13.8 KB)

@myboy

请问您能否提供更多关于您希望如何设置表格的具体信息?例如,您希望重复的标题行有多少行,以及每行的单元格数量和宽度的具体要求是什么?

@myboy 您是使用 Aspose.Words 代码创建此表的吗? 能否提供有关您目标的更多信息? 您需要每行有 4 个单元格的表格吗?

我是微软 word 创建的,我想通过 java 创建类似这样的表格,就是说表格的表头有多行,然后每行的单元格数量不一致,但是要平均分配宽度,并且宽度固定不能自动调整,然后多个表格要设置标题重复,也就是我发的图片和文档里的这种形式

我用 java 创建这样的表格,但是我一旦调整下面单元格个宽度,上面的单元格就会跟着变,我不知道有什么办法可以做到每一行自定义单元格宽度

不一定是 4 个单元格,反正就是有多行,支持每行单元格数量不一致,但是宽度要平均分配

@myboy 遗憾的是,Aspose.Words 现在不支持表格的 "分布列 "功能。 我们已将此功能记录在问题跟踪器中,编号为 WORDSNET-21364。 您可以使用此代码创建类似的表格,但不需要分布列:

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Table table = builder.startTable();

builder.getRowFormat().setHeadingFormat(true);
// Add rows with 4 cells.
builder.insertCell();
builder.write("11111111111111111111111111111111111111");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.endRow();

builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.endRow();

builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.write("重复");
builder.endRow();

builder.insertCell();
builder.write("重复");
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
builder.write("重复");
builder.insertCell();
builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
builder.insertCell();
builder.write("重复");
builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
builder.endRow();

builder.getRowFormat().setHeadingFormat(false);
// Add empty rows (adjust the number of rows as needed).
for (int i = 0; i < 50; i++) {
    builder.insertCell();
    builder.write("");
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
    builder.write("");
    builder.insertCell();
    builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
    builder.insertCell();
    builder.write("");
    builder.getCellFormat().setHorizontalMerge(CellMerge.NONE);
    builder.endRow();
}

builder.endTable();

table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);

PageSetup pageSetup = doc.getSections().get(0).getPageSetup();
double availableWidth = pageSetup.getPageWidth() - pageSetup.getLeftMargin() - pageSetup.getRightMargin();

for (Row row : table.getRows()) {
    for (Cell cell : row.getCells()) {
        cell.getCellFormat().setPreferredWidth(PreferredWidth.fromPoints(availableWidth / row.getCells().getCount()));
    }
}

doc.save("output.docx");

好的,万分感谢回复,对我帮助很大

1 Like