Apache poi 使用REST流式处理excel工作表
我有一个新的要求,使用RESTAPI下载excel工作表(导出所有数据)。我们正在使用一个内部UI框架,它将帮助我们使用RESTAPI,并且它将来自浏览器。因为我处理的是大量的数据,我们当时的想法是这样的Apache poi 使用REST流式处理excel工作表,apache-poi,Apache Poi,我有一个新的要求,使用RESTAPI下载excel工作表(导出所有数据)。我们正在使用一个内部UI框架,它将帮助我们使用RESTAPI,并且它将来自浏览器。因为我处理的是大量的数据,我们当时的想法是这样的 创建SXSSFWorkbook 最终SXSSFWorkbook wb=新SXSSFWorkbook(100); Sheet sh=wb.createSheet() 使用批处理从数据库获取数据,并在excel工作表中创建行。(在while循环中,我们发出db query以获取行列表。然后从列表中
最终SXSSFWorkbook wb=新SXSSFWorkbook(100);
Sheet sh=wb.createSheet()代码>
使用批处理从数据库获取数据,并在excel工作表中创建行。(在while循环中,我们发出db query以获取行列表。然后从列表中,我们在excel工作表中创建行-下面的代码显示了我如何使用结果在excel中创建行和列)
for(列出行结果:allResultsData){
row=sh.createRow(rowIndex++);
细胞指数=0;
对于(对象列数据:行结果){
Cell Cell=row.createCell(cellIndex++);
cell.setCellValue(columnData!=null?columnData.toString():null);
}
}
方法的返回类型为StreamingOutput。工作簿被写入StreamingOutput的OutputStream
返回新的StreamingOutput(){
@凌驾
public void write(OutputStream output)引发IOException、WebApplicationException{
试一试{
LOGGER.info(“============================将开始流媒体=================”);
写(输出);
}捕获(例外e){
e、 printStackTrace();
抛出新的WebApplicationException(e);
}最后{
wb.dispose();
}
}
};代码>
上述方法适用于少量数据。我注意到,只有在创建了整个excel文件之后,流媒体才会开始。所以,当数据量很大时,流式处理直到整个excel被创建(这需要一些时间)并且我们在浏览器中看到错误时才会开始
我想知道我是否正确使用了API。此外,如果这些库不是用于此目的,那么有人能提出其他解决方案吗?是否有我们可以使用的库,以便我们可以从部分创建的excel工作表开始流式处理
提前感谢,
SD