我使用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列的宽度缩小到这些单个数字的值,并且标题的文本几乎不可见,直到它被手动扩展。
答案 0 :(得分:2)
使用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 |
| | | | |
+----------+----------+------------------------+-------------+
答案 1 :(得分:1)
POI 4.0:尝试在调用所有sheet.autoSizeColumn(*)
方法之后调用createCell
。
答案 2 :(得分:0)
我认为这是Apache POI 3.9及更早版本中的一个已知问题。问题是POI将列宽设置为0.尝试更新到POI 3.10并查看是否能解决您的问题。
的更多信息