gpt4 book ai didi

java - 大型 Excel 工作表生成优化

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:41 28 4
gpt4 key购买 nike

我正在尝试使用 POI 库生成一个包含近 13000 行和 3 列的 .xls 文件。但是生成完整的文件需要将近 8-10 分钟。谁能建议我如何减少执行时间?

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());
}

最佳答案

使用制表符或逗号作为分隔符生成字符分隔值文件 (csv) 会更快。使用 .csv 扩展名保存文件。

Excel 读取这些文件的速度非常快。

关于java - 大型 Excel 工作表生成优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21017231/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com