我有一个包含不同数据的多张工作表的.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进行类型转换。
我试图查看是否有任何方法可以在不同的工作簿中复制工作表,但到目前为止,它似乎必须逐个单元地完成。
有关如何解决此问题的任何见解?
答案 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