- PR -

POIでのサマリ情報の扱い方

1
投稿者投稿内容
FZR
常連さん
会議室デビュー日: 2007/09/10
投稿数: 42
投稿日時: 2008-03-10 16:32
いつもお世話になっております。FZRと申します。

POIを利用してExcelデータをresponseに出力した際に表示されるエラーについてお尋ねしたく存じます。環境はJ2SE1.4.2_13,Tomcat5.0.30,poi-3.0.2-FINALをWin-XP上で試しています。

Excelデータをファイルとして保存せずにresponseに直接出力した際に、「サマリー情報が失われました。」とエラーダイアログが表示されてしまいます。ソースは概ね以下の通りです。

-------------------------------------------------------
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet sheet = workBook.createSheet("Sheet1");
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(new HSSFRichTextString("アイテム1"));
response.setHeader("Content-Disposition", "attachment; filename=\\"sample.xls\\"");
response.setContentType("application/octet-stream");
OutputStream outStrm = response.getOutputStream();
outStrm.write(workBook.getBytes());
outStrm.close();
-------------------------------------------------------

下から2行目のworkBook.getBytes()で得たbyte[]をresponseに返しているわけですが、Javadocでは"get the bytes of just the HSSF portions of the XLS file."と書かれていて、サマリ情報は含まれていないようにも取れるのですが、ここで言うサマリ情報が作成年月日とか作成者名などの個人サマリ情報でしたら、逆に付与したくないくらいですし、システム的にダミーを付与できるものなら付与したいと考えています。

writeメソッドで一旦サーバに保存し、それをresponseに返す方法だと問題ないのですが、どうもこのgetBytes()使うと情報が欠落してしまうみたいなのですが、responseに対してダイレクトに返したいと考えています。そこで...

・情報を欠落させずにbyte[]を取得する
・ダミーのサマリ情報(?)を作る

等、上記事象に対して回避策をご存じの方がおられましたら教示いただけませんでしょうか。よろしくお願いいたします。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2008-03-10 19:01
わざわざbyte[]をとらなくても
コード:

HSSFWorkbook workBook = new HSSFWorkbook();
HSSFSheet sheet = workBook.createSheet("Sheet1");
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(new HSSFRichTextString("アイテム1"));
response.setHeader("Content-Disposition", "attachment; filename=\\\\"sample.xls\\\\"");
response.setContentType("application/octet-stream");
OutputStream outStrm = response.getOutputStream();
workBook.write(outStrm);
outStrm.flush();



で出来ませんか?

# Byte[]をbyte[]に修正

[ メッセージ編集済み 編集者: kuma 編集日時 2008-03-10 19:03 ]
FZR
常連さん
会議室デビュー日: 2007/09/10
投稿数: 42
投稿日時: 2008-03-11 09:14
# kumaさん

早速の回答ありがとうござます。
「データが欠落してる?」と言う方ばかりに目が行ってしまっていたようで
そちらの解決ばかりにアタマを悩ませていました。
何も問題なくすんなりと解決いたしました。
やはりドキュメントは良く読まないとダメですね。

どうもありがとうございました。m(_ _)m
1

スキルアップ/キャリアアップ(JOB@IT)