获取InputStream forom Apache的POI工作簿

ior*_*vic 4 java excel inputstream apache-poi

有没有办法获得InputStreamApache的POI工作簿?

我需要它来管道到另一个OutputStream,但我无法找到这样的方法(如果它存在).

如果没有,任何关于获得它的替代方法的提示?

Ale*_*rev 8

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

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


小智 7

这是实现亚历山大·托卡列夫(Alexander Tokarev)答案的#2的方法(即从工作簿中获取Inputstream):

    try {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        byte[] barray = bos.toByteArray();
        InputStream is = new ByteArrayInputStream(barray);
    } catch (IOException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)