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

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

另外,我不允许“加载”现有文件,即

不允许使用

 SXSSFWorkbook wb = new SXSSFWorkbook(file_input_stream) 


我可以使用Workbook工厂:
Workbook workbook = new SXSSFWorkbook();
workbook = WorkbookFactory.create(file_input_stream);

但是当我需要冲洗行的时候,
 ((SXSSFSheet)sheet).flushRows(100); 

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

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

有关如何解决此问题的任何见解?

最佳答案

您可能正在向其添加大数据的模板。您需要使用 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

10-08 17:09