- PR -

POIのセルスタイルのコピーについて

1
投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2005/04/20
投稿数: 69
投稿日時: 2006-07-20 10:53
Javaシステムから帳票を出力する、という設計を行っています。
テンプレートファイルをなるエクセルを読み込んで、出力するようにしようと考えています。
JavaプログラムからデータがListでわたってきます。
テンプレートには、
---------------------------------------------------------
|    品名 | 数量 | 単価 | 金額 |
---------------------------------------------------------
| [--a--] | [--b--]| [--c--]| [--d--]|

のように、1行分のデータ表示方法を記述します。
[--a--]や[--b--]には、getter名が設定されます。

テンプレートファイルを読み込み
実行するメソッド名を取得
getterを実行
取得したデータをセルにセット

という流れで出力させようとしています。
ここで、カラムに対応したgetter名を取得する際に、

セルのスタイル(つまり、セルの結合や罫線や表示設定)を取得
マップにその情報を保持
データ件数分表示する中で、カラムごとに保持しているセルスタイルを適用

ということも合わせて行いたいのですが、
各セルのスタイルを取得して、細かくバラしてそれを全部、次の行の同じセル番号のセルにも適用するっていうのは、スマートなやり方じゃないような気がしています。
もっと他に良いやり方ありませんか?
progman
大ベテラン
会議室デビュー日: 2005/06/08
投稿数: 227
投稿日時: 2006-07-24 09:19
処理全体の流れはアップされてる内容からはもうひとつわからないのですが、
POIは私と似たようなことされてるのかな?

同じワークシートであれば、
・セルのスタイル情報
 nc.setCellStyle(c.getCellStyle());
 nc=コピー先のセル、c=コピー元のセル
・マージ情報
 From,Toまでばらしてやってます。
Region reg = hssfSheet.getMergedRegionAt(i);
int rf = reg.getRowFrom();
int rt = reg.getRowTo();
int cf = reg.getColumnFrom();
int ct = reg.getColumnTo();
rf+=last;
rt+=last;
Region nr = new Region();
nr.setRowFrom(rf);
nr.setRowTo(rt);
nr.setColumnFrom((short)cf);
nr.setColumnTo((short)ct);
hssfSheet.addMergedRegion( nr);

ワークシート上にセルのスタイル情報を設定するのが面倒だとおもうのですが、
同一シートなら、面倒ですが許容できるかなとおもうのですがいかがでしょう?

1

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