获取InputStream forom Apache的POI工作簿
有没有办法获得Apache的POI工作簿InputStream
?
我需要它来pipe道到另一个OutputStream
,但是我无法find这样的方法(如果存在)。
如果没有,可以用其他方法获得它的任何提示?
有几种方法可以解决这个问题:
- 你可以使用标准的java
PipetInputStream
和PipedOutputStream
。 但是您必须为使用PipedInputStream
创build不同的线程(如http://docs.oracle.com/javase/7/docs/api/java/io/PipedInputStream.html中所述 ) - 您可以将内容写入
ByteArrayOutputStream
,然后可以通过ByteArrayInputStream
使用生成的字节数组。 这可以在一个线程中顺序完成。
在这里他们使用从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; }