How about this:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
wb.write(baos);
InputStream is = new ByteArrayInputStream(baos.toByteArray());


Martin Makundi schrieb:
Hi!

I have a HSSF document which can be written to an output stream.
However, I want to stream it to the website visitor, which requires an
inputstream... I have tried the following, but it somehow doesn't seem
to work.

Anybody know what can be done to fix it?

    final PipedInputStream inputStream = new PipedInputStream();
    final PipedOutputStream out;
    try {
      out = new PipedOutputStream(inputStream);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    Executors.newSingleThreadExecutor().execute(new Runnable() {
      @Override
      public void run() {
        try {
          wb.write(out);
        } catch (IOException e) {
          MarkupUtils.handleUnexpectedException(e);
        }
      }
    });

    IResourceStream resourceStream = new IResourceStream() {
      /**
       * @see org.apache.wicket.util.resource.IResourceStream#close()
       */
      public void close() throws IOException {
        inputStream.close();
      }

      /**
       * @see org.apache.wicket.util.resource.IResourceStream#getContentType()
       */
      public String getContentType() {
        return getAlternateContentType();
      }

      /**
       * @see org.apache.wicket.util.resource.IResourceStream#getInputStream()
       */
      public InputStream getInputStream()
          throws ResourceStreamNotFoundException {
        return inputStream;
      }

      /**
       * @see org.apache.wicket.util.resource.IResourceStream#getLocale()
       */
      public Locale getLocale() {
        throw new IllegalAccessError("Method not implemented.");
      }

      /**
       * @see org.apache.wicket.util.resource.IResourceStream#length()
       */
      public long length() {
        try {
          return inputStream.available();
        } catch (IOException e) {
          MarkupUtils.handleUnexpectedException(e);
        }
        return 0;
      }

      /**
       * @see 
org.apache.wicket.util.resource.IResourceStream#setLocale(java.util.Locale)
       */
      public void setLocale(Locale locale) {
        throw new IllegalAccessError("Method not implemented.");
      }

      /**
       * @see org.apache.wicket.util.watch.IModifiable#lastModifiedTime()
       */
      public Time lastModifiedTime() {
        return 
Time.milliseconds(DatabaseServices.getCurrentTimestamp().getTime());
      }

    };

java.io.IOException: Pipe closed
        at java.io.PipedInputStream.checkStateForReceive(Unknown Source)
        at java.io.PipedInputStream.receive(Unknown Source)
        at java.io.PipedOutputStream.write(Unknown Source)
        at java.io.OutputStream.write(Unknown Source)
        at org.apache.poi.poifs.storage.BigBlock.doWriteData(BigBlock.java:55)
        at 
org.apache.poi.poifs.storage.DocumentBlock.writeData(DocumentBlock.java:220)
        at org.apache.poi.poifs.storage.BigBlock.writeBlocks(BigBlock.java:86)
        at 
org.apache.poi.poifs.filesystem.POIFSDocument$BigBlockStore.writeBlocks(POIFSDocument.java:603)
        at 
org.apache.poi.poifs.filesystem.POIFSDocument.writeBlocks(POIFSDocument.java:275)
        at 
org.apache.poi.poifs.filesystem.POIFSFileSystem.writeFilesystem(POIFSFileSystem.java:390)
        at 
org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1168)



**
Martin

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to