2014-03-06 49 views
1

我使用POI 3.2(最新版本可以用於我的客戶端)生成Java文件。 這是我的代碼。正如你所看到的,我正在使用HSSF,因爲我需要製作一個XLS文件。POI 3.2 Excel文件數據丟失

HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet("Reporting"); 
sheet.setColumnWidth(250,250); 
HSSFRow Row; 
HSSFCell Cell; 

//Content part (doesn't matter) 


IWDResource resource = WDResourceFactory.createCachedResource(
       wb.getBytes(), 
       "workbook.xls", 
       WDWebResourceType.XLS); 

wdContext.currentContextElement().setXls(resource); 

現在我已經下載了XLS文件後,我想打開它,但該文件似乎已損壞。

圖片上的鏈接:http://tinyurl.com/nop52sh

當我按下「不發送」 2次,去EXCELL文件中正確的形式打開。

任何想法爲什麼?

回答

2

不要致電wb.getBytes(),它不會做你想要的。從getBytes() javadoc

方法getBytes - 獲取XLS文件的HSSF部分的字節。使用它可以自己構建POI POIFSFileSystem。

相反,如果你想整個XLS文件作爲一個字節數組,做

ByteArrayOutStream baos = new ByteArrayOutStream(); 
wb.write(baos); 
byte[] xlsBytes = baos.toByteArray(); 

最後的Apache POI 3.2現在是古老的,5歲以上!你真的應該升級,看到changelog的想法,所有的錯誤修復從那時起

+0

Wooow,它真的有效!謝謝Gagravarr! – user3388946