就是我的表格有多行,前几行要设置标题重复,内容不自动调整,然后这几行单元格数量又不一致,宽度也不一致,请问这种能够实现吗
重复.docx (13.8 KB)
我是微软 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");
好的,万分感谢回复,对我帮助很大