https://t.wss.pet/f/ffl1aiy5x0t 复制链接到浏览器打开
@SalesDhorde 恐怕,我看不出以相同方式导出 HTML 和 DOCX 文档的可能性。问题在于 HTML 和 MS Word 文档有很大不同,浏览器和 MS Word 具有不同的内容布局规则。因此,很难甚至有时不可能以相同的方式在 HTML 和 MS Word 文档中显示内容。
对于您的情况,您可以在应用任何解决方法之前将文档导出为 HTML。在这种情况下,HTML 看起来更好。然后应用解决方法并将文档导出为 DOCX。
// Build the table.....
//......................
// Save as HTML
HtmlSaveOptions opt = new HtmlSaveOptions();
opt.setPrettyFormat(true);
doc.save("C:\\Temp\\out.html", opt);
// Apply workaround for DOCX
table.autoFit(AutoFitBehavior.FIXED_COLUMN_WIDTHS);
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);
}
}
doc.save("C:\\Temp\\out.docx");