13. システム設定

13.1. Confugrationによる設定

読み込み時及び書き込み時の動作をConfigurationクラスでカスタマイズできます。

 1// 設定用のオブジェクトConfigurationの作成
 2Configuration config = new Configuration();
 3
 4// シートが見つからない場合にエラーにしない。
 5config.setIgnoreSheetNotFound(true);
 6
 7// ConfigurationクラスをXlsMapperに渡す。
 8XlsMapper xlsMapper = new XlsMapper();
 9xlsMapper.setConfiguration(config);
10
11// 設定を変更したXlsMapperでシートの読み込み
12SheetObject sheet = xlsMapper.load(
13    new FileInputStream("example.xls"), SheetObject.class);

Configurationは、XlsMapperクラスのインスタンスを作成時にも持っているため、次のような変更もできます。

1XlsMapper xlsMapper = new XlsMapper();
2
3// XlsMapperクラスから直接XlsMapperConfigのインスタンスを取得し変更する。
4xlsMapper.getConfiguration().setIgnoreSheetNotFound(true);
5
6// 設定を変更したXlsMapperでシートの読み込み
7SheetObject sheet = xlsMapper.load(
8    new FileInputStream("example.xls"), SheetObject.class);

Configurationでは以下の設定ができます。

表 - 13.1.1 Configurationで設定可能な項目

プロパティ名

クラス型

説明

ignoreSheetNotFound

boolean

シートが見つからなくても無視するかどうか。
初期値は'false'です

normalizeLabelText

boolean

ラベルを正規化(空白、改行、タブを除去)して、マッピングするかどうか
初期値は'false'です。
Ver.1.1以上 から利用可能です。

regexLabelText

boolean

マッピングするラベルに /正規表現/ と記述しておくと正規表現でマッピングできるかどうか。
初期値は'false'です。
Ver.1.1以上 から利用可能です。

continueTypeBindFailure

boolean

型変換エラーが発生しても処理を続けるかどうか。
初期値は'false'です。
Ver1.1以前 は、 skipTypeBindFailure という名称です。

mergeCellOnSave

boolean

書き込み時にセルの結合を行うかどうか。
アノテーション @XlsColumn の属性mergedを書き込み時も考慮します。
初期値は'false'です。

correctNameRangeOnSave

boolean

書き込み時に名前の定義範囲を修正するかどうか。
アノテーション @XlsHorizontalRecords@XlsVerticalRecords でレコードの追加を行った箇所に名前の定義があるときに考慮します。
初期値は'false'です。
Ver.0.3以上 から利用可能です。

correctCellDataValidationOnSave

boolean

書き込み時に名前のセルの入力規則を修正するかどうか。
アノテーション @XlsHorizontalRecords@XlsVerticalRecords でレコードの追加を行った箇所に入力規則が設定されているときに考慮します。
初期値は'false'です。
Ver.0.3以上 から利用可能です。

formulaRecalcurationOnSave

boolean

書き込み時に式の再計算をするか設定します。
数式を含むシートを出力したファイルを開いた場合、一般的には数式が開いたときに再計算されます。
ただし、大量で複雑な数式が記述されていると、パフォーマンスが落ちるため 'false' 設定すると無効にすることもできます。
初期値は'true'です。
Ver.1.5以上 から利用可能です。

cacheCellValueOnLoad

boolean

読み込み時にセルの値をキャッシュして処理速度の向上を行うかどうか。書き込み時に名前のセルの入力規則を修正するかどうか。
初期値は'true'です。
Ver.2.0以上 から利用可能です。

cellFormatter

CellFormatter

POIのセルの値をフォーマットして文字列として取得するクラスです。
実装は、Ver.0.4から Excel-CellFormatter を利用しています。

fieldProcessorRegistry

FieldProcessorRegstry

フィールドプロセッサーを管理します。

converterRegistry

CellConverterRegistry

セルの値をJavaオブジェクトに変換するクラスを管理します。

beanFactory

BeanFactory

読み込み時などのJavaBeansオブジェクトのインスタンスを作成すためのコールバック用クラス。
独自の実装を渡すことで、SpringFrameworkなどのDIコンテナで管理しているクラスを使用できます。

bindingErrorsFactory

SheetBindingErrorsFactory

マッピング時のエラー情報 SheetBindingErrors のインスタンスを作成すためのコールバック用クラス。
独自の実装を渡すことで、SpringFrameworkなどのDIコンテナで管理しているクラスを使用できます。
Ver.2.0以上 から利用可能です。

sheetFinder

SheetFinder

アノテーション @XlsSheet に基づき処理対象のシートを抽出するクラス。
Ver.1.1以上 から利用可能です。

formulaFormatter

MessageInterpolator

アノテーション @XlsFormula の属性 value で指定した数式を独自の変数やEL式をフォーマットする際に利用します。
Ver.1.5以上 から利用可能です。

annotationMapping

AnnotationMappingInfo

XMLなどによるアノテーションのマッピング情報を設定します。
詳細は、XMLによるマッピング方法 のを参照してください。
Ver.2.0以上 から利用可能です。

commentOperator

CellCommentOperator

セルのコメント情報をマッピングするデフォルトの処理を設定します。
詳細は、シート上のコメントの取得@XlsCommentOption を参照してください。
Ver.2.1以上 から利用可能です。

13.2. Javaシステムプロパティによる設定

Javaシステムプロパティによる設定可能な項目一覧を下記に示します。

javaシステムプロパティは、JVMの起動パラメータ -Dxxx=yyy または、 System.setProperty("xxx", "yyy") で指定します。

表 - 13.2.1 Javaシステムプロパティによる設定項目一覧 :widths: 30 70 :header-rows: 1

プロパティ名

説明

xlsmapper.jexlRestricted
[2.3+]
ExpressionLanguageJEXLImpl にて、JEXLを Restrict パーミッションでEL式を評価するか指定します。
デフォルトは true で、JexlPermissions.RESTRICTED でEL式が評価されます。
値を false に指定すると、JexlPermissions.UNRESTRICTED が設定され、EL式が制限なく評価されますが、
ただし、ELインジェクションの脆弱性に繋がる可能性があるので注意してください。
xlsmapper.jexlPermissions
[2.3+]
ExpressionLanguageJEXLImpl にて、JEXLを評価する際のパーミッションを指定します。
EL式中で実行/参照可能なパッケージを指定し、複数指定するときはカンマ(,)区切りで指定します。
例 . sample1.*,sample2.core.*
このプロパティは、 xlsmapper.jexlRestricted の値が true のときにおいて、Restrictパーミッションで実行されるときのみ有効になります。