童話王国 -覚書-

童話王国の生活をサポートする生産特化型計算ツール作者の気まぐれ開発日誌&キャラ育成日記。

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

POI使用時、意図しない場所にスペースが付く件について

2004-12-16 12:51:10 | Java
POIを使用し、テンプレのExcelファイルを読み込み、編集及びシートを追加しています。
タイトルの現象が起こった場所は、テンプレのExcelシートの場所でした。
現象として、
・シート1、シート2の同じ場所に固定文字
・固定文字はセルを5個横に結合し、中央揃え
・テンプレのExelファイルの文字はシート1シート2共に「****」(社名なので伏せます)
POIを通し、処理後のシート1は「****」と表示されるのに対し、シート2は「**** 」と表示
・中央揃えをしている為、微妙に位置がずれて障害報告orz

という状態でした。
ちょっと調べてみた所、
Jakarta-POI :取得した Excel データに半角スペースが付加される現象について
というまさに、今自分がなった現象について報告している投稿がありました。

SSTDeserializer#addToStringTable の try-catch 文で、意図的に半角スペースを付加しているところがありました。
リッチテキストを完全に正しく扱いきれないために、
リッチテキスト→ノーマルテキスト
と変換しているそうです。
このときに Exception が発生したら、半角スペースを付加する仕様になっているようです。


つまり、POI使用上、発生したら回避することは無理なので、何とか誤魔化す方法を探せと言うことに。

誤魔化し方
1.POIでシート読み込み後、半角スペースが付いた場所に上書きで文字を入れる→×「**** 」
2.「****」が「**** 」となるので元のファイルを「 ****」にしてみた→×「 ****」
3.表示上は問題が無いので「 **** 」にしてみた→○「 **** 」で見た目問題なし

と言うわけで3にしました。
見た目&印刷結果が同じならばそれでいいのよ・・・
コメント   この記事についてブログを書く
« 気になるアンケート | トップ | オタクのための東京ガイドブック »
最近の画像もっと見る

コメントを投稿

Java」カテゴリの最新記事

関連するみんなの記事