【JPIERE-0451】JPiere CSV Exporter(BOM付きのCSV他)

ウィンドウのエクスポートアイコンからCSV形式のテキストファイルにダウンロードする処理はプラグインでカスタマイズする事ができます。そこで、JPiereではiDempiereのオリジナルのCSVエクスポートの処理をベースに次の機能を追加しました。

  • BOM付きのCSVのダウンロード制御
  • 読取専用タブのダウンロード許可
  • 読取専用フィールドのダウンロード許可
  • ダウンロードする値を表示値に変更する制御
  • ダウンロードするファイルの文字コード指定

 

BOM付きのCSV

ウィンドウのエクスポートアイコンから、CSV形式を選択してダウンロードして、そのままExcelでダウンロードすると日本語が文字化けします。

文字化け
文字化け

これは、不具合というわけではなく、iDempiereのエクスポートの処理で作成されるCSV形式のDataにはBOM(Byte Order Mark)の情報が付加されていないため、エクセルがファイルを開く時に文字コードを判断できないため文字化けが起きています。CSV形式のデータにBOMの情報は付加しても、付加しなくてもどちらでも良いとされており(一般的にはBOMの情報は付加しないUTF-8 without Signatureの場合が多いようです)、iDempiereの場合は不具合というよりは仕様と考えられます。

※BOMの情報が付加されている状態とはUTF-8 with Signatureです。BOMの情報が付加されていない状態とは、UTF-8 without Signatureの状態です。

 文字化けしないようにCSV形式でダウンロードしたファイルをエクセルで開くためには、ダウンロードしたCSV形式のファイルの拡張子を".txt"に変更し、エクセルにインポートする際に、UTF-8を指定しする事で文字化けを回避する事ができます。

 しかしながら、その作業は、ちょっとだけ面倒なので、JPiereではあらかじめBOMの情報を付加する事で、ダウンロードしたCSVファイルを直接エクセルで開いても、文字化けしないようにしました。

読取専用タブのダウンロード許可

iDempiere標準のCSVダウンロード機能では、読取専用タブはダウンロードできなかったのをできるようにしました。(2022年2月3日に改善した機能。JPiere8.2より)

読取専用フィールドのダウンロード許可

iDempiere標準のCSVダウンロード機能では、読取専用フィールドはダウンロードできなかったのをできるようにしました。(2022年2月6日に改善した機能。JPiere8.2より)

ダウンロードする値を表示値に変更する制御

iDempiere標準のCSVダウンロード機能では、ダウンロードするCSVファイルの値は、オリジナルの処理ロジックで処理された値になります。そこでウィンドウに表示される値に変更できるようにしました。ウィンドウに表示されている値をダウンロードしたい場合には、システムコンフィグ設定で、JP_EXPORT_CSV_DISPLAY_VALUEY にして下さい。

(2022年2月6日に改善した機能。JPiere8.2より)

JP_EXPORT_CSV_DISPLAY_VALUE = Y

デフォルトの設定です。ウィンドウに表示されている値でダウンロードします。

JP_EXPORT_CSV_DISPLAY_VALUE = Y の例
JP_EXPORT_CSV_DISPLAY_VALUE = Y の例

JP_EXPORT_CSV_DISPLAY_VALUE = N

iDempiereオリジナルの処理と同じ処理でダウンロードします。伝票ステータスや取引先の表記がウィンドウに表示されている値とは異なる事が確認できると思います。

JP_EXPORT_CSV_DISPLAY_VALUE = Nの例
JP_EXPORT_CSV_DISPLAY_VALUE = Nの例

ダウンロードするファイルの文字コード指定

システムコンフィグ設定に、JP_EXPORT_CSV_CHARACTER_CODE を 追加して、その値に文字コード(例”SHIFT_JIS”)を設定する事で、ダウンロードするファイルの文字コードを指定できるようにしました。初期値は、UTF-8です。

(2022年3月9日に改善した機能。JPiere9より)

カスタマイズ情報

システムコンフィグ設定

◆JP_EXPORT_CSV_WITH_BOM

システムコンフィグ設定の「JP_EXPORT_CSV_WITH_BOM」で、BOMをつけるかどうか制御する事ができます(※2020/4/21にシステムコンフィグ設定でBOMをつけるかどうか制御できるように改善)。クライアントレベルで設定できます。

  • Y … BOM付き
  • N … BOM無し。

◆JP_EXPORT_CSV_DISPLAY_VALUE

CSV形式のファイルにダウンロードする値を組織レベルで選択する事ができます。※2022年2月6日追加した機能。

  • Y … ダウンロードするCSVの値はウィンドウに表示されている値と同じになります。
  • N … ダウンロードするCSVの値はウィンドウに表示されている値とは異なり、iDempiere標準機能と同じ処理ロジックで処理された値になります。

◆JP_EXPORT_CSV_CHARACTER_CODE

CSVダウンロードするファイルの文字コードを指定できます。※2022年3月9日に追加した機能

  • 例: UTF-8SHIFT_JIS など…

追加クラス

◆jpiere.base.plugin.org.adempiere.impexp.JPiereGridTabCSVExporter

iDempiereのGridTabExporterをコピーしてカスタマイズしています。

カスタマイズ履歴

2024年11月12日(Ver11):支払方法をダウンロードする時のエラーを修正

「支払方法[PaymentRule]」があるデータをダウンロードしようとすると「Cannot invoke "Object.toString()" because the return value of "org.compiere.model.GridTab.getValue(int, String)" is null」と表示されるエラーを修正しました。

2022年3月9日(Ver9): ダウンロードするCSVファイルの文字コード指定

2022年2月6日(Ver8.2) : 読取専用フィールのダウンロード許可

2022年2月6日(Ver8.2) : ダウンロードする値を表示値に変更する制御

2022年2月3日(Ver8.2) : 読取専用タブのダウンロード許可

読取専用タブではCSVダウンロードできないように制御されていたのを解除しました。これはExcel形式では、読取専用タブでもダウンロードできるためです。ダウンロードさせたくない場合は、ダウンロードアイコンに対してアクセス制御して下さい。