- PR -

jakarta-POI でExcelに追記すると、ファイル破損

1
投稿者投稿内容
java_Baby
会議室デビュー日: 2008/05/21
投稿数: 2
投稿日時: 2008-05-21 18:00
はじめて投稿させて頂きます。

POIにて既存のエクセルを読み込み、任意のセルに追記を行い、
新規名称のEXCELを作成する処理を行っているのですが、
POIの処理は正常終了(エラー無し)で終了するのですが、
出来上がったエクセルが破損しており、
正常にWINDOWS上でファイルを開くことが出来ません。
(読み取れないデータが存在します。ブックを回復しますか?云々のエラー)

やっている処理的には、
---------------------------------
シートの読込

読み込んだシートに、setCellValue

FileOutput
---------------------------------

どうも読み込んだエクセルシートに大量にデータが存在する場合に起きるみたいです。
(10〜20行程度のシートでは、正常にファイルにデータ追記をする事ができます。)

解決の為のアドバイスを頂ければと思い書き込みさせて頂きました。
よろしくお願い致します。

KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2008-05-21 20:00
大量にデータが存在する場合とは具体的にどの程度なのでしょうか?
excelの仕様上の制限等で発生することもあります。
「表示行数や項目数がキャパを超えた」
「セルに入力されている計算式がキャパを超えた」
など。
わたなべ
大ベテラン
会議室デビュー日: 2007/12/09
投稿数: 123
お住まい・勤務地: 札幌
投稿日時: 2008-05-21 21:09
Excelのバージョンでも違いが出そうな問題ですね
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2008-05-21 21:12
POIはどのバージョンをお使いですか?
私も2.5.1で同じような現象がありました。

そのときは、設定内容をいろいろ変更して回避しました。
最新であれば、うまくいくかもしれませんね。

java_Baby
会議室デビュー日: 2008/05/21
投稿数: 2
投稿日時: 2008-05-22 09:20
レスありがとうございます。

>大量にデータが存在する場合とは具体的にどの程度なのでしょうか?
具体的には、横50列、縦1000行位のデータです。
POIのバージョンは、poi-3.0-rc4です。

先日、対象エクセルのシートを読込んで、そのままファイルに(追記せずに)OUTPUTしてみたのですが、やはり同じ状態でした。
もう少し設定を変更したりして、やってみます。

アドバイスありがとうございました。
ストリーム
会議室デビュー日: 2008/06/19
投稿数: 1
投稿日時: 2008-06-19 15:51
私も単純にPOIでシートを読み込んで書き出しただけでExcelファイルが破損しました。
元のExcelファイルを作成しなおしたりして回避していたのですが、シート数が多かったりすると破損する確立が多い気がします。
そこで今とても重宝している回避策を乗せてみます。
OpenOfficeのExcel(calcですか?)で元のExcelを作成(保存するだけでも効果があります)してみて下さい。
フリーだからか分かりませんが、POIとの相性が良い気がします。
関係なかったらごめんなさい。
ご参考までに。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-06-19 17:25
自分の経験ではスタイルを大量に作るとあるラインからExcelで開けなくなるという現象がありましたね。
結局自前でプールする仕組みを作るはめになったのを覚えています。
だっちょ
大ベテラン
会議室デビュー日: 2006/12/05
投稿数: 115
投稿日時: 2008-06-19 19:42
 私はJava Excel APIを使ってますが、8000行くらいのシートを保存しても、そんな羽目になったことはありません。
 ただ×がラになる対処だけは必要でしたが。
1

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