如何使用 SXSSF 写入现有文件?

How to write to an existing file using SXSSF?

我有一个 .xlsx 文件,其中包含多个包含不同数据的 sheet。在所有sheet中,有一个sheet需要容纳近100,000行数据,并且需要使用Java和poi写入数据。

这对于 SXSSFWorkbook 来说似乎非常快速和简单,我只能在内存中保留 100 行,但缺点是我只能写入新文件(或覆盖现有文件)。

此外,我不允许 'load' 现有文件,即

 SXSSFWorkbook wb = new SXSSFWorkbook(file_input_stream) 
不允许。

我可以使用工作簿工厂:

Workbook workbook = new SXSSFWorkbook();
workbook = WorkbookFactory.create(file_input_stream);</pre> 

但是当我刷新行的时候,

 ((SXSSFSheet)sheet).flushRows(100); </pre> 

我收到错误消息,不允许从 XSSFSheet 到 SXSSFSheet 的类型转换。

我试图查看是否有任何方法可以跨不同的工作簿复制 sheets,但到目前为止,它似乎必须逐个单元地完成。

对如何解决这个问题有什么见解吗?

您可能有一个要向其添加大数据的模板。您需要使用 SXSSFWorkbook(XSSFWorkbook) 构造函数:

XSSFWorkbook wb = new XSSFWorkbook(new File("template.xlsx"));
SXSSFWorkbook wbss = new SXSSFWorkbook(wb, 100);
Sheet sheet = wbss.createSheet("sheet1");
// now add rows to sheet