How to copy entire sheets from large excel files w

2019-09-18 08:16发布

我是新为正式用户,我总是发现我的答案在这里,但现在我得问。

我用最后Apache的POI 3.8发布工作(从2012/03/26),我有操纵与多个工作表一个文件,其中只有一个包含数据的一个大的量(超过1000列和10000行)。

我只需要有更多的列的大表。 因此,与存在我应该使用SAX读它和SXSSF重写它当前的工具。

Excel文件已经在每片不同的风格和图像预格式化,因此这将是有益的,能够使文件的副本,而不大板。

还有我的问题:我怎样才能使板材的使用SAX副本(从输入流),而不对它进行分析? 我试图做的像这里 ,但外地sheetsXSSFWorkbook具有可见性设置为私人。

该真棒事情是有东西像SXSSFWriter.SheetIterator如果是在POI开发商未来的计划。

谢谢阅读,

亚瑟

**更新* *

该文件是太大,能够打开它作为一个普通XSSFWorkbook(OutOfMemoryException异常)。 难道是可以创建和XSSFSheet从InputStream? 就像下面:

  XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader
            .getSheetsData();
    int index = 0;
    while (iter.hasNext()) {
        InputStream stream = iter.next();
        String sheetName = iter.getSheetName();
        if (!sheetName.equalsIgnoreCase("BigSheetThatIDontWant")) {
            Sheet newSheet = new XSSFSheet(stream);
            stream.close();
        }
        ++index;
    }

非常感谢你的回答。

Answer 1:

你将需要阅读的文件。

关于第二个问题看到公共java.util.Iterator的<XSSFSheet> XSSFWorkbook.iterator()

Allows foreach loops:

 XSSFWorkbook wb = new XSSFWorkbook(package);
 for(XSSFSheet sheet : wb){

 }


Answer 2:

我认识到在我与POI的经验和复制操作是,尽可能的表现并不重要,为了复制一个或多个表它的安全和方便加载整个工作簿,删除不必要的表,然后保存结果另一个文件。

和+1安迪迭代器。



文章来源: How to copy entire sheets from large excel files without parsing them using Apache POI?