如何更快地写入apache.poi.xssf Excel工作表?
- 论坛
- 如何更快地写入apache.poi.xssf Excel工作表?
10 浏览
如何更快地写入apache.poi.xssf Excel工作表?
我正在使用jdbcTemplate查询ETL工具并获取结果,然后使用Apache POI库将结果写入Excel工作表。我需要获取和写入约70万至100万行数据。
之前我使用了以下设置:
jdbcTemplate.query(new CustomPreparedStatementCreator(arg), new ResultSetExtractor() { @Override public Void extractData(ResultSet rs) { while (rs.next()) {... 逐行处理 ...} // 连接保持开放了650秒 // setFetchSize未设置,所以使用默认值 }
现在我使用了以下设置:
jdbcTemplate.setFetchSize(200); SqlRowSet srs = jdbcTemplate.queryForRowSet(sql); // 所有行数据在60秒内被获取到内存中 while (srs.next()) {... 逐行处理 ...} // 写入工作表仍然需要600秒
现在我的问题是:
- 如何利用Java 8的parallelStream API并行处理SqlRowSet对象中的所有行数据?是否有其他替代方案?
- 如何更快地将数据写入工作表(一个org.apache.poi.xssf.streaming.SXSSFSheet)?