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

时间:2015-08-15 21:09:34

标签: java excel apache-poi xssf

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

使用SXSSFWorkbook看起来非常快速和简单,我只能在内存中保留100行,但缺点是我只能写入新文件(或覆盖现有文件)。

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

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

我可以使用Workbook factory:

Workbook workbook = new SXSSFWorkbook();
workbook = WorkbookFactory.create(file_input_stream);

但是到了我要冲洗行的时候了,

 ((SXSSFSheet)sheet).flushRows(100); 

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

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

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

1 个答案:

答案 0 :(得分:5)

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