1

POI 3.2 (クライアントに使用できる最新バージョン) を使用して Java で Excel ファイルを生成しています。これが私のコードです。ご覧のとおり、XLS ファイルを作成する必要があるため、HSSF を使用しています。

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 回押すと、正しい形式でエクセル ファイルが開きます。

理由はありますか?

4

1 に答える 1

3

を呼び出さないでください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 年以上前のものです。それ以降に修正されたすべてのバグのアイデアについては、変更ログを参照してください。

于 2014-03-07T04:45:53.420 に答える