Я пытаюсь создать файл .xls, содержащий почти 13000 строк и 3 столбца, используя библиотеку POI. Но для создания этого полного файла требуется почти 8-10 минут. Может ли кто-нибудь предложить, как уменьшить время выполнения?Оптимизация генерации Excel Excel
public static void generateReconReport(Connection con,String neName,String reportTable) throws SQLException, IOException{
Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sql = "SELECT * FROM "+reportTable;
ResultSet rsNERecon = stmt.executeQuery(sql);
System.out.println("Resulset obtained, Generating Report");
Date date = new Date();
SimpleDateFormat sid = new SimpleDateFormat("MMddyyyy");
String curDate = sid.format(date);
String fileName = neName.toUpperCase()+"_" + curDate + ".xlsx";
File ob_file = new File(fileName);
if(!ob_file.exists())
ob_file.createNewFile();
HSSFWorkbook hsfWb = new HSSFWorkbook();
HSSFSheet hsfSheet = hsfWb.createSheet(neName.toUpperCase()+" Recon Report");
HSSFRow hsfRow = hsfSheet.createRow(0);
ResultSetMetaData metaRs = rsNERecon.getMetaData();
int colCount = metaRs.getColumnCount();
for (int j = 1; j <= colCount; j++) {
String colName = metaRs.getColumnName(j);
hsfRow.createCell(j).setCellValue(colName);
}
FileOutputStream fileOut = new FileOutputStream(fileName);
int rowNum = 1;
while (rsNERecon.next()) {
hsfRow = hsfSheet.createRow(rowNum);
for (int j = 1; j <= colCount; j++)
hsfRow.createCell(j).setCellValue(rsNERecon.getString(j));
rowNum++;
}
for (int j = 1; j <= colCount; j++)
hsfSheet.autoSizeColumn(j);
rsNERecon.close();
stmt.close();
hsfWb.write(fileOut);
fileOut.close();
System.out.println("Report generated for "+neName.toUpperCase());
}
Вы пробовали профилировать код? Ваши показатели производительности звучат необычно плохо, так что возможно, что задержка на самом деле не в POI, а в другом месте (например, в части базы данных)? – Gagravarr