我有一个程序,它接受一个输入文件并将其放入excel中。一切都很好,直到第32000行左右。突然左对齐格式化停止工作。此外,它似乎突然重新开始工作在第65000行。我不确定发生了什么或为什么。我提供了格式化函数的代码。
private static void addDataToExcel(ArrayList<String[]> rowList, int amtOfColumns){
SXSSFRow row = null;
String[] colValues = null;
for(int i = 1 ; i<= rowList.size() ;i++){
row = (SXSSFRow) worksheet.createRow(rowCount);
//TODO: Check if really necessary since for loop starts at 1 now
if(i == 0){
} else {
colValues = rowList.get(i-1);
}
CellStyle style = workbook.createCellStyle();
style.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
for(int j=0; j < amtOfColumns; j++){
if(colValues[j] == null){
SXSSFCell cell = (SXSSFCell) row.createCell(j);
cell.setCellValue(colValues[j+1]);
cell.setCellStyle(style);
}
else{
//System.out.println(j);
SXSSFCell cell = (SXSSFCell) row.createCell(j);
cell.setCellValue(colValues[j]);
cell.setCellStyle(style);
}
}
rowCount++;
}
System.out.println("Running...");
答案 0 :(得分:1)
问题是你每行创建一个单元格样式,这不是你应该做的事情。 Excel对工作簿可以处理的最大单元格样式具有相当低的限制。
由于“单元格样式”是工作簿范围,因此您应该将代码更改为
SXSSFRow row = null;
String[] colValues = null;
CellStyle style = workbook.createCellStyle();
style.setAlignment(XSSFCellStyle.ALIGN_RIGHT);
for (int i = 1 ; i<= rowList.size() ; i++) {
row = (SXSSFRow) worksheet.createRow(rowCount);
这将阻止您耗尽可用的单元格样式,因此应该允许程序正常工作