excel-cellformatterのリリース
JExcelAPIやApache POIでExcelの書式に沿ってフォーマットするJavaのライブラリをリリースしました。
セルの書式が日付、会計の場合、JavaのSimpleDateFormatやDecimalFomratではサポートしていない書式記号があり、それらに対応したライブラリになります。
和暦、分数以外にも、漢数字、大字表示など日本語環境で使用可能な書式にも対応しています。
Excel2000〜2010で利用可能な全ての書式に対応しています。
さらに、LibreOfficeなので利用可能な一部の記号にも対応しています。
ただし、Cellの値を文字列としてフォーマットする機能のみで、文字列からオブジェクトに変換するパース機能はありません。
サイトURL
簡単な使い方
Apacehe POIの場合
Cellオブジェクトを「POICellFormatter#fomrat(...)」に渡すだけです。
- OSの言語環境によって変わる書式があるため、Linux環境の場合は注意が必要です。
- 引数にLocaleを直接指定することもできます。
- POICellFormatterは書式オブジェクトをキャッシュするため、インスタンスを使い回しで利用します。
Cell cell = /* セルの値の取得 */; final POICellFormatter cellFormatter = new POICellFormatter(); String contents = cellForrmatter.format(cell); // ロケールを指定してフォーマットする。 contents = cellForrmatter.format(cell, Locale.JAPANESE);
Jexcel API
Cellオブジェクトを「JXLCellFormatter#format(...)」に渡します。
- 日本語を含むExcelファイルの場合、文字コードを ISO8859_1 を指定します。
- 指定しない場合は、会計の書式中の円記号 ¥ が文字化けします。
- Windows-31j と指定しても文字化けするため、注意してください。
- 1904年始まり設定がされているExelファイルの設定かどうか、メソッド
「JXLUtils.isDateStart1904(...)」 で調べた値を渡します。
-
- 通常は1899年12月31日(Excel表記上は 1900年1月0日)が基準です。
- JXLUtils.isDateStart1904(...)メソッドには、Sheetオブジェクトを引数にとるメソッドも用意されています。
// シートの読み込み final WorkbookSettings settings = new WorkbookSettings(); settings.setSuppressWarnings(true); settings.setGCDisabled(true); // 文字コードを「ISO8859_1」にしないと、一部の文字が文字化けします。 settings.setEncoding("ISO8859_1"); final Workbook workbook = Workbook.getWorkbook(in, settings); Cell cell = /* セルの値の取得 */; final JXLCellFormatter cellFormatter = new JXLCellFormatter(); // JXLUtils.isDateStart1904(...)を利用して、1904年始まりのシートか調べる。 String contents = cellForrmatter.format(cell, JXLUtils.isDateStart1904(workbook)); // ロケールを指定してフォーマットする。 contents = cellForrmatter.format(cell, Locale.JAPANESE, JXLUtils.isDateStart1904(workbook));