获取InputStream forom Apache的POI工作簿

有没有办法获得Apache的POI工作簿InputStream

我需要它来pipe道到另一个OutputStream ,但是我无法find这样的方法(如果存在)。

如果没有,可以用其他方法获得它的任何提示?

有几种方法可以解决这个问题:

  1. 你可以使用标准的java PipetInputStreamPipedOutputStream 。 但是您必须为使用PipedInputStream创build不同的线程(如http://docs.oracle.com/javase/7/docs/api/java/io/PipedInputStream.html中所述 )
  2. 您可以将内容写入ByteArrayOutputStream ,然后可以通过ByteArrayInputStream使用生成的字节数组。 这可以在一个线程中顺序完成。

你可以查看https://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/eventusermodel/XLSX2CSV.java

在这里他们使用从XLSX文件获得的inputstream将整个表格转换为csv文件。

 ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(this.xlsxPackage); XSSFReader xssfReader = new XSSFReader(this.xlsxPackage); StylesTable styles = xssfReader.getStylesTable(); XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); int index = 0; while (iter.hasNext()) { InputStream stream = iter.next(); String sheetName = iter.getSheetName(); this.output.println(); this.output.println(sheetName + " [index=" + index + "]:"); processSheet(styles, strings, new SheetToCSV(), stream); stream.close(); ++index; }