aspose words 21.5.0.jar生成的表格后边没有到最后,后面流了一块空白
示例:AsposeTable文件“https://t.wss.pet/f/fegoqzqgda0 复制链接到浏览器打开”
aspose words 21.5.0.jar生成的表格后边没有到最后,后面流了一块空白
按照你说的方法设置上后,字体和边线紧挨着,不是想要的显示效果,应该和手动插入的表格效果相同。
word里手动插入的表格也带单元格边距呢,显示的就很正常。
请问:在我提供的代码的基础上:列宽固定,表格显示效果如上图,怎么实现上面的显示效果?
@SalesDhorde 感谢您提供有关预期输出的更多细节。但在您使用 MS Word 显示的这种情况下,您应该使用 table.autoFit(AutoFitBehavior.AUTO_FIT_TO_WINDOW);
而不是固定宽度。下面的所有代码都不应被执行:
table.autoFit(AutoFitBehavior.AUTO_FIT_TO_WINDOW);//表格固定宽度,设置列宽时用固定表格参数
// Section section = (Section) table.getAncestor(NodeType.SECTION);
// double tableWidth = 0;//表格总宽度
//// if(model.getColumnWidthType().equals("percentage")){
// for (Row row : table.getRows()) {
// //不允许跨页断行显示
// row.getRowFormat().setAllowBreakAcrossPages(false);
// double rowWidth = 0;
// for (Cell cell : row.getCells()) {
// rowWidth += cell.getCellFormat().getWidth();
// }
// if (rowWidth > tableWidth) {
// tableWidth = rowWidth;
// }
// }
// //文档总宽度减去左右间隔
// double pageWidth = section.getPageSetup().getPageWidth() - (section.getPageSetup().getLeftMargin() + section.getPageSetup().getRightMargin());
// for(Row row : table.getRows()) {
// for(Cell cell : row.getCells()) {
// //HUATAI项目 报表设计器列宽为5 处理线之间空白显示宽度问题
// if(cell.getCellFormat().getWidth() == 5.0){
// //设置左右0.05厘米内边距
// cell.getCellFormat().setLeftPadding(1.5);
// cell.getCellFormat().setRightPadding(1.5);
// }
// double cellRatio = cell.getCellFormat().getWidth() / tableWidth;
// cell.getCellFormat().setWidth(cellRatio * pageWidth);
// }
// }
使用aspose word 生成word和html时,设置的单元格宽度相同,生成出来表格效果单元格宽度不一致
有生成word和html的代码示例
示例https://t.wss.pet/f/feqznbcy3aw 复制链接到浏览器打开
可以实现强制宽度吗
不让他适应表格内容
我试过不好使,还是原来的效果
@SalesDhorde 好的,感谢您提供的信息。我没有考虑到 HTML 文件。您可以设置 cell.getCellFormat().setPreferredWidth(PreferredWidth.fromPoints(50));
,而不是 cell.getCellFormat().setWidth
,这样 html 表格也会有类似的单元格,但要注意的是,当您减小浏览器宽度时,html 表格会自动调整内容。
Here is my output files:
table.zip (10.3 KB)
1、PreferredWidth.fromPoints(50)为什么必须设置的50?
2、什么场景使用cell.getCellFormat().setWidth,什么场景使用 cell.getCellFormat().setPreferredWidth?
3、如果表格需要对各个单元格列宽设置不同数值时,应该如何设置列宽?
为什么必须设置值是50呢?
@SalesDhorde 也许这是翻译上的疏漏,但我的意思是 50 只是一个示例值,您可以尝试找出表格中最大的单元格宽度,并将其设置为首选宽度:
double maxCellWidth = 0;
for(Row row : table.getRows()) {
for (Cell cell : row.getCells()) {
if (maxCellWidth < cell.getCellFormat().getWidth()) {
maxCellWidth = cell.getCellFormat().getWidth();
}
}
}
cell.getCellFormat().setPreferredWidth(PreferredWidth.fromPoints(maxCellWidth));
在生成的文件中,表格大小将受到页面大小的限制,并根据表格大小显示所有单元格。
按照这种方式,如果我每列的宽度一样(如18,不是50),这样处理实际上获取到的最大单元格宽度跟单元格宽度是一个,PreferredWidth.fromPoints(18),这样设置在html中显示的列宽还是不一致