QA@IT

Apache POI で、タイトル行やタイトル列の設定を取得する方法について

10671 PV

Apache POI で、シートを別ブックにコピーする際に、タイトル行とタイトル列の設定をコピーしたいと思っています。

タイトル行、タイトル列の設定は
HSSFWorkbook#setRepeatingRowsAndColumns で可能ですが、このパラメーターとなる

タイトル行の開始位置、終了位置
タイトル桁の開始位置、終了位置を取得する方法がわかりません。
setRepeatingRowsAndColumns で検索して出てくるサンプルコードは、即値を渡しているものばかりで、シートから設定を取得する方法がわからない状態です。

どなたか方法をご存じないでしょうか、よろしくお願いします。

6/24 追記
下記の方法で、タイトル行とタイトル列の情報を取得しようとしましたが

CellRangeAddress cellRangeCol = (HSSFSheet)srcSheet.getRepeatingColumns();
CellRangeAddress cellRangeRow = (HSSFSheet)srcSheet.getRepeatingRows();

「メソッド getRepeatingRows() は型 HSSFSheet で未定義です」
のコンパイルエラーとなります。
poi-3.9-20121203.jar のソースを確認すると、下記の通りで、
間違いなくメソッドは Public で宣言されています。

public CellRangeAddress getRepeatingRows() {
    return getRepeatingRowsOrColums(true);
}

public CellRangeAddress getRepeatingColumns() {
    return getRepeatingRowsOrColums(false);
}

訳が分かりません。
単純なプロジェクトでもう一回検証してみます。

上記コンパイルエラー、解決しました。
WEB用の参照ライブラリ設定に poi-3.2-FINAL.jar が存在していたためでした。
古いライブラリを削除することでコンパイルが通るようになりました。

回答

ドキュメントによれば

http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Workbook.html

setRepeatingRowsAndColumns

Deprecated. use Sheet.setRepeatingRows(CellRangeAddress) or Sheet.setRepeatingColumns(CellRangeAddress)

と書いてあります。

そして
http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/Sheet.html

を見ると、それらの対となる get系メソッドがあります。
getRepeatingColumns()
getRepeatingRows()

返却値の型がCellRangeAddressですのでこちらで取得できませんか?

編集 履歴 (0)
  • 回答ありがとうございます。
    糸口が見えてきそうな気がします、試してみます。
    -

テンプレート用シート丸ごとコピーが便利

開始位置まで取得するのは不可能かと

編集 履歴 (0)
  • 回答ありがとうございます。
    同一ブックだと cloneSheet で一発なのですが、
    別ブックへのコピーとなると色々と面倒みたいです。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。