あとで試す:POI-HSSFのHSSFDataFormatterクラスによるセルの文字列表現の取得

ドキュメントがExcelメインなので、自動化の一環で「一覧表化されたデータを読み込んで別のドキュメント(orソースファイル)を生成」というのをやる予定。(VBAを覚えようとせずに)Apache-POI-HSSFで何とか実現しようと思って最新版のJavadocを眺めてたら、面白そうなクラス発見。

HSSFDataFormatter (POI API Documentation)
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFDataFormatter.html

ざっくり説明を読んでみたところ、セルの値を文字列として取得するためのクラスっぽい。「画面上で見たままの値を文字列として取得できる」ってほうが伝わりやすいか。内部で保持されている値(数値、文字列、ブール値など)に、指定の表示書式(3桁カンマ区切り、桁指定0埋め、和暦表示など)でフォーマットされた表示文字列を取得できる。

POI-HSSFでは、セルの値を取得する場合には#getNumericCellValue()、#getStringCellValue()、#getDateCellValue()のように、取得したい型を明示的に指定する必要がある。
問題なのは、セルにはセルタイプ(数値、文字列、ブール、式)が設定されており、呼び出すメソッドとセルタイプを合わせないと例外がスローされてしまうことだ。たとえば文字列型のセルに対して#getNumericCellValue()や#getDateCellValue()を呼ぶと例外がスローされる。
これにより、取得対象のセルのセルタイプをチェックし、それに応じて呼び出すgetXXXCellValue()メソッドを切り替えるコードを書く必要があった。これは面倒。

Excelをデータソースとして利用したい場合、「四の五の言わずに表示されているとおりの文字列が欲しい」という状況がある。そういう場合にこのHSSFDataFormatterクラスを使えば、ラクに対応できそうである。


というわけで月曜日にさっそく試してみるつもり。画面項目定義表をもとに入力フォームのHTMLを作る、って作業が必要なので丁度良い。