スポンサー広告 - スポンサーサイト

--/--/-- (--) --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【プログラミング】JAVA - POI備忘録 其の弐

2010/11/30 (火) 21:38

POI 3.7でのお話。続き。
座標の指定をVBAチックにしたい。
そんなときに便利なのが
org.apache.poi.ss.util.CellReference
org.apache.poi.ss.util.CellRangeAddress
クラス。

単一のセルの場合
CellReference cr = new CellReference("A1");
System.out.println(cr.getRow() + ":" + cr.getCol());
出力結果は「0:0」

ちなみに、列を表すアルファベットをインデックスに変換したい場合。
int ret = CellReference.convertColStringToIndex("A");
System.out.println(ret);
出力結果は「0」

その逆は
String ret = CellReference.convertNumToColString(0);
System.out.println(ret);
出力結果は「A」

こんな感じで相互に変換が可能。
これらのメソッドの存在を知らずに自力で変換ロジックを書いたのは内緒。

さらにVBAチックにセルの範囲指定が可能。
CellRangeAddress address = CellRangeAddress.valueOf("A1:D5");
int firstRow = address.getFirstRow();
int lastRow = address.getLastRow();
int firstColumn = address.getFirstColumn();
int lastColumn = address.getLastColumn();
System.out.println(firstRow + ":" + lastRow + ":" + firstColumn + ":" + lastColumn);
出力結果は「0:4:0:3」
2重ループで回せば該当セル全てに対して処理が可能。
これは備忘録 其の壱 でも何気なく使ってました。

インデックスから座標文字列の取得も可能。
CellRangeAddress address = new CellRangeAddress(0, 4, 0, 3);
System.out.println(address.formatAsString());
出力結果は「A1:D5」

座標の指定がエクセルを操作する感覚でできるので便利だと思う。
結局はインデックスに変換して処理することにはなるのだけども。
なんだかんだと色々用意されているのね。
関連記事

コメントの投稿

非公開コメント

検索フォーム
RSSリンクの表示
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。