我在java中使用Apache POI来创建一个excel文件。我填写数据然后尝试自动调整每一列的大小,但是大小总是错误的(我认为是一致的)。前两行总是(?)完全折叠。当我在 excel 中自动调整列大小时,它工作得很好。
没有写入空白单元格(我相信),调整大小是我做的最后一件事。
这是相关代码:这是一个没有错误处理等的简化版本。
public static synchronized String storeResults(ArrayList<String> resultList, String file) {
if (resultList == null || resultList.size() == 0) {
return file;
}
FileOutputStream stream = new FileOutputStream(file);
//Create workbook and result sheet
XSSFWorkbook book = new XSSFWorkbook();
Sheet results = book.createSheet("Results");
//Write results to workbook
for (int x = 0; x < resultList.size(); x++) {
String[] items = resultList.get(x).split(PRIM_DELIM);
Row row = results.createRow(x);
for (int i = 0; i < items.length; i++) {
row.createCell(i).setCellValue(items[i]);
}
}
//Auto size all the columns
for (x = 0; x < results.getRow(0).getPhysicalNumberOfCells(); x++) {
results.autoSizeColumn(x);
}
//Write the book and close the stream
book.write(stream);
stream.flush();
stream.close();
return file;
}
我知道有一些类似的问题,但其中大多数只是在填写数据之前进行大小调整的情况。而少数不是更复杂/没有答案的。
编辑:我尝试使用几种不同的字体,但没有奏效。这并不奇怪,因为无论是什么字体,所有列都应该完全折叠,或者不应该完全折叠。
另外,由于出现了字体问题,我在 Windows 7 上运行该程序。
已解决:这是一个字体问题。我发现唯一有效的字体是 Serif。