2012-04-17 310 views
24

調用簡單toBytes()會產生字節但exel會引發警告。如何將POI HSSFWorkbook轉換爲字節?

丟失的文檔的信息

周圍的Googling給了我這個link看着Javadocs的工作表和POI HOW-TO說,類似的事情。基本上我不能得到Bytes而不丟失一些信息,應該使用write方法。

雖然寫入工作正常,但我確實需要發送字節。有什麼辦法可以做到嗎?這是得到沒有得到任何警告的字節。

回答

53

作爲該郵件列表的帖子中稱

調用HSSFWorkbook.getBytes()不返回所有必要數據的重新 構建一個完整的Excel文件。

您可以使用寫入方法與ByteArrayOutputStream來獲取字節數組。

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
try { 
    workbook.write(bos); 
} finally { 
    bos.close(); 
} 
byte[] bytes = bos.toByteArray(); 

(是不是真的需要的close呼籲一個ByteArrayOutputStream,但恕我直言,這是件好事風格的情況下,其後又改爲別樣流反正包括。)

9

如何:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
workbook.write(baos); 
byte[] xls = baos.toByteArray(); 

爲了獲得一個完整的excel文件,你必須調用write(OutputStream)方法。如果你想從這個字節,只是給一個ByteArrayOutputStream