【发布时间】:2022-01-31 15:02:45
【问题描述】:
我正在使用 POI 3.9 和 jdk1.6.0_14。
我正在使用下面的代码来 autoSizeColumn,但问题是生成 excel 时,它没有完全自动调整为列,当我在列之间双击时,那时我可以正确地看到该列的自动调整大小。
for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
HSSFSheet thisSheet = workbook.getSheetAt(i);
log.info("Last row : "+thisSheet.getLastRowNum());
HSSFRow rowexcel = thisSheet.getRow(thisSheet.getLastRowNum());
// Auto sizing columns
for (short j = 0; j < rowexcel.getLastCellNum(); j++) {
workbook.getSheetAt(i).autoSizeColumn(j);
}
// Freezing the top row
workbook.getSheetAt(i).createFreezePane(0, 1);
}
代替
HSSFRow rowexcel = thisSheet.getRow(thisSheet.getLastRowNum());
我也试过顶行
HSSFRow rowexcel = thisSheet.getRow(0);
但仍然没有解决方案。
【问题讨论】:
-
在您生成文件的系统上,您使用的所有字体是否都存在 + 可供 Java 使用?
-
是的,它使用 Arial 字体,该字体存在于 Windows/Font 中。生成的文件也有 Arial 字体。
-
Java 看到了吗?列大小非常依赖于字体,如果 Java 无法访问正确的字体,则无法正确计算宽度...
-
U 也可以为每个标题单元格使用 setColumnWidth。因此它将为所有单元格应用大小。
标签: java apache-poi