我正在使用Apache POI SXSSFWorkbook生成.xlsx excel电子表格,但是我需要将该文件保存到blob中,而不是下载它 . 我还需要这个能够扩展,所以如果我有600,000条记录放入文件,我需要避免内存不足错误 . 这是代码
SXSSFWorkbook workbook = new SXSSFWorkbook(100);
addContent();
通常当输出到文件时我会做类似的事情
OutputStream output = response.getOutputStream();
workbook.write(output);
但在这种情况下,我不需要它去文件,只需要数据库中的blob,除了没有办法将SXSSFWorkbook保存到blob中 . 我可以将工作簿保存到OutputStream中并尝试将其保存到blob中,但通常需要inputStream . 是否有将outputStream转换为inputStream的实用程序?
2 回答
使用@kiwiwings的建议我有以下工作:
就是这样 .
为了将来参考,我最终把它放到一个文件然后从中读取 .
然后在DAO中使用hibernate session来getLobHelper并从inputStream创建blob . 性能还可以,我只测试了25,000左右的记录,但还没有内存问题 .