我正在使用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 c
、 sheet.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