如何更快地写入apache.poi.xssf Excel工作表?

10 浏览
0 Comments

如何更快地写入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秒

现在我的问题是:

  1. 如何利用Java 8的parallelStream API并行处理SqlRowSet对象中的所有行数据?是否有其他替代方案?
  2. 如何更快地将数据写入工作表(一个org.apache.poi.xssf.streaming.SXSSFSheet)?
0