我是靠谱客的博主 端庄手套,最近开发中收集的这篇文章主要介绍java下载execl优化_java-大型Excel工作表生成优化,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我正在尝试使用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在读取这些文件方面非常快.

标签:apache-poi,java,excel

来源: https://codeday.me/bug/20191122/2058421.html

最后

以上就是端庄手套为你收集整理的java下载execl优化_java-大型Excel工作表生成优化的全部内容,希望文章能够帮你解决java下载execl优化_java-大型Excel工作表生成优化所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部