使用 poi 自动调整列宽



我正在使用POI将数据附加到现有 excel 中。但是在附加数据时,编辑之前已经存在的 excel 标题被压缩到小区域。有人可以建议我如何避免这种情况吗?我在附加数据后甚至应用了autoSize,但没有用。

FileInputStream inputStream = new FileInputStream(new File("dataexcel.xlsx"));
    XSSFWorkbook workbook = new XSSFWorkbook(intputStream);
    XSSFSheet sheet = workbook.getSheetAt(0);
    int rowNum = sheet.getPhysicalNumberOfRows();
                    int cellNum = 1;
                    Row lastRow = sheet.createRow(rowNum);
    for(int i =0 ; i<7; i++)
    {
                    Cell cell = lastRow.createCell(cellNum++);
                    cell.setCellValue(value);
                    cell.setCellStyle(generalStyle);
    }

假设标题有一个长文本,如"This is very long text"并将 7 个值(2,3,1,7,4,6,5)附加到每个单元格中的现有 excel 到下一行,如上所示。然后,enitre 列的宽度缩小到这些个位数的值,并且标题的文本在手动展开之前几乎不可见。

使用autoSizeColumn()方法?

示例您的工作表如下

+----------+----------+----------+-------------+
| Column A | Column B | Column C | Column D    |
+----------+----------+----------+-------------+
|   xxx    |    xxx   |This is very long text  |
|          |          |          |             |
+----------+----------+----------+-------------+

如果是这样,请为 Column csheet.autoSizeColumn(2); 自动调整列大小。结果将是

+----------+----------+------------------------+-------------+
| Column A | Column B | Column C               | Column D    |
+----------+----------+------------------------+-------------+
|   xxx    |    xxx   |This is very long text                |
|          |          |                        |             |
+----------+----------+------------------------+-------------+

POI 4.0:尝试在调用所有方法后调用sheet.autoSizeColumn(*) createCell

我相信

这是Apache POI 3.9及更早版本中的已知问题。问题是 POI 将列宽设置为 0。尝试更新到 POI 3.10,看看是否可以解决您的问题。

更多信息请访问 https://issues.apache.org/bugzilla/show_bug.cgi?id=55644

最新更新