我想.xlsx在 JAVA 中使用 POI 编写一个大文件(50K 行)。我希望每一行都包含多个下拉单元格。当行数小于 30K 时代码工作正常,但如果行数超过 35K 则写入损坏的文件。
我试过了SXSSFWorkbook,XSSFWorkbook但没有一个对我有用。
这是代码:
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
SXSSFSheet sheet = workbook.createSheet();
String[] optionsArray = new String[] {"1000.00","2000.00"};
int no_of_rows = 35000;
for(int i=0;i<=no_of_rows;i++) {
SXSSFRow row1 = sheet.createRow(i);
SXSSFCell r1c1 = row1.createCell(0);
DataValidationConstraint constraint1 = sheet.getDataValidationHelper().createExplicitListConstraint(optionsArray);
CellRangeAddressList addressList1 = new CellRangeAddressList(i, i, 0, 0);
DataValidation dataValidation1 = sheet.getDataValidationHelper().createValidation(constraint1, addressList1);
sheet.addValidationData(dataValidation1);
r1c1.setCellValue("1000.00");
SXSSFCell r1c2 = row1.createCell(1);
DataValidationConstraint constraint2 = sheet.getDataValidationHelper().createExplicitListConstraint(optionsArray);
CellRangeAddressList addressList2 = new CellRangeAddressList(i, i, 1, 1);
DataValidation dataValidation2 = sheet.getDataValidationHelper().createValidation(constraint2, addressList2);
sheet.addValidationData(dataValidation2);
r1c2.setCellValue("2000.00");
}
FileOutputStream fos =new FileOutputStream(new File("c:\\data\\testout.xlsx"));
workbook.write(fos);
workbook.close();
fos.close();
我希望 POI 至少能够很好地处理 50K 行此类数据。
动漫人物
相关分类