2014-10-31 78 views
1

有沒有辦法使用java中的Writer類生成一個xlsx文件?我可以使用Writer類生成xlsx文件嗎?

我使用,以產生轉換爲字節陣列的工作簿的方法:

private byte[] generateXlsxBytes() { 
    XSSFWorkbook workbook = new XSSFWorkbook(); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    workbook.write(baos); 
    baos.close(); 
    return baos.toByteArray(); 
} 

我嘗試通過這樣做寫字節到作家:

Writer writer = ..get the writer.. 
IOUtils.write(generateXlsBytes(), writer); 

但是,當我嘗試在excel中打開文件我收到一條消息,指出該文件的標記對擴展名(xlsx)不正確。

我使用定製的框架,它不會允許我使用FileOutputStream直接寫入文件。如果有人能告訴我一種使用Writer的方法,我會非常感激。

+0

[作家](http://docs.oracle.com/javase/8/docs/api /java/io/Writer.html)用於編寫字符,並將字節數組傳遞給*自定義框架*,該框架明顯將字節編碼爲可能要寫入原始字節的字符。正如你所說的框架是*自定義的*,假設你可以修改/擴展它,我會建議你添加一個方法到'IOUtils',它需要一個[OutputStream](http://docs.oracle.com/ javase/8/docs/api/java/io/OutputStream.html),並通過傳遞一個'FileOutputStream'來使用該方法。 – A4L 2014-10-31 09:28:32

+0

這應該工作。你確定你正在沖洗並正確關閉作家嗎? – 2014-10-31 09:32:46

+0

如何添加一個方法到'IOUtils'?它是apache包的一部分。 – 2014-10-31 09:33:20

回答

1

@ A4L謝謝你向我解釋。

作家只是不想寫入原始字節。

我剛纔問我的同事之一,使該框架的改變,這樣我就可以使用OutputStream

相關問題