問題
- 非常に長いフォームのエントリを Excel (xls) 形式にエクスポートしようとすると、ログに次のエラーが表示されてエクスポートに失敗します。
-
ERROR [http-nio-8080-exec-97][PortletServlet:119] javax.portlet.PortletException: com.liferay.dynamic.data.mapping.exception.FormInstanceRecordExporterException: java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV')
javax.portlet.PortletException: com.liferay.dynamic.data.mapping.exception.FormInstanceRecordExporterException: java.lang.IllegalArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV')
Environment
- Liferay DXP 7.2
解決策
- これは、 に 256 を超える列が含まれるフォームで発生します。 Excel 97 以前のバージョンと互換性のある Excel シート (.xls ファイル) には、最大 256 列を含めることができます。 Liferay (Apache POI) で使用されるライブラリはその制限を認識しており、それらの境界外の列が作成された場合に例外をスローします。 したがって、これはそのバージョンの Excel ファイル形式の制限です。 そして、その制限は Liferay 製品にも反映されます。
- フォームを短縮できず、Excel 形式でエクスポートすることが非常に重要な場合は、カスタム モジュールを作成して、エクスポート プロセスで新しい Excel ファイル形式 (.xlsx) を使用することができます。これにより、より多くの列を使用できます。 あくまでも参考として、クラス DDMFormInstanceRecordXLSWriter.java をモデルとして使用することをお勧めします。
追加情報
- Excel の制限に関する情報源: ワークシートの最大列数は何ですか