サンプル: Excel を JSON に変換する

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  データソースとターゲット > JSON >

サンプル: Excel を JSON に変換する

このサンプルは MapForce を使用して Excel ファイルから JSON ドキュメントを作成する方法について示しています。ソース Excel ワークブックは2つのワークシートから構成されています: OfficeStaffOffice ワークシートは企業のアドレスに関する情報を提供し、 Staff ワークシートはすべての従業員をリストしています。

mf_json_06

スタッフ ワークシート

ビジネスの必要条件は以下の通りです:

 

1.Excel ファイルからデータを抽出し、 JSON ドキュメントに変換します。
2.JSON ファイルは、各従業員のために、電話の内線番号を外部の連絡先と共有することができます。マーケティングと管理部署からの従業員の内線番号が外部と共有することができます。
3.JSON ファイル内での従業員のシェアはゼロを含む数値である必要があります。既知でない場合、シェアは JSON ファイル内の nullを示す必要があります。

 

上記のゴールを達成するマッピングは下に説明されています。このマッピングは次のパスで見つけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\\Excel_Company_To_JSON.mfd

mf_json_07

Excel_Company_To_JSON.mfd

上に示される通り、マッピングはソース Excel コンポーネント とターゲット JSON コンポーネントにより構成されています。 Excel ファイルの2つのワークシートはソース Excel コンポーネントとして表示されていることに注意してください。 Office ワークシートから企業の名前はマップされますが、フィールドのその他は Staff ワークシートからマップされます。各ワークシートから行データを読み取るように、マッピングがどのように構成されているかを確認するには、対応する AddRemove_Selections ボタンをクリックしてください。Staff ワークシートに関しては、設定は以下に示されているとおりです。

mf_json_08

上記の設定は1から終わり (動的)までの行を読み取るようにマッピングに命令しています。最初の行は列名を持つヘッダーで、「最初の行はヘッダー」 チェックボックスが選択されています。ダイアログは列 A から G への型を指定します。  Excel コンポーネントに関する詳細は、 Microsoft OOXML Excel 2007+ を参照してください。

 

ターゲット コンポーネントは JSON 構造です。JSON コンポーネントを JSON ファイルをマッピングコンポーネントとして追加する方法で説明される通りマッピングに追加します。 構造はマッピングと同じフォルダー内で見つけることのできる JSON スキーマ employees.schema.json を反映しています。 JSON コンポーネントの構成に関する詳細は, JSON コンポーネント設定 を参照してください。

 

マッピング上には複数の中間コンポーネントが存在します。最初は value-map コンポーネントです。 value-map は部署に従い、電話番号が外部と共有できるかを決定します。これは、上記のビジネス条件 #2 に対応しています。 タイトルバーをダブルクリックすることにより、 value-map コンポーネントの設定をビューすることができます:

mf_json_09

上記の構成は以下の通り要約することができます: Department が 「Administration」 または 「Marketing」 の場合 true が返されます。それ以外の場合、 false が返されます。この方法で計算された true または false 値はターゲット JSON プロパティに書き込まれます。 値マップに関する詳細は、 Value-Map の使用 を参照してください。

 

最後に、マッピングはソース Excel ファイル内に Shares 値が存在する場合、各行のコンテキスト内で目的を決定するための exists 関数を活用します。 この関数は、値が存在すると、 Boolean true を返し、それ以外の場合は、 false を返します。 結果の true または false 値は、 If-Else 条件に入力として与えられます。false の場合、定数により提供されている空の文字列が 「null として共有」 ターゲットアイテムにパスされます。 「null として共有」 アイテムのデータ型であるため、 disp_jsonnull アイコンにより示されている通りこの空の値は結果の JSON ファイル内で nullになります。

 

従業員の共有する値が数値の場合、 If-Else条件を満たしません。代わりに、個別の接続を介して、 (数値の型である disp_jsonnumber) 「番号として共有」 ターゲットアイテムに書き込まれます。

 

マッピングに関数を追加する詳細に関しては、マッピングにビルトイン関数を追加する を参照してください。 If-Else 条件はフィルターと条件で詳しく説明されています。

 

マッピングの実行方法

MapForce 内で生成されたファイルをプレビューするには、「出力」 タブをクリックします。 下のイメージでは結果の JSON ファイルのフラグメントのみが表示されています。

mf_json_10

Mapping output

マッピングの出力をファイルに保存するには、次のいずれかを行います。:

 

「出力」 メニューから「出力ファイルの保存」をクリックします。
「生成された出力の保存」 ic-save-sel-string ツールバーボタンをクリックします。

 

MapForce Server を使用して自動化する方法

MapForce Server にライセンスを供与済みの場合、 Linux、macOS、または、Windows マシン上でマッピングをコマンドラインで実行することができます。サーバー上でのマッピングの実行は、サーバーでの実行のためにマッピングを準備する内で説明されている通り、いくつかの追加ステップが必要になります。サーバー上でこの特定のマッピングを実行するために必要なステップは以下の通りです:

 

1.マッピングを右クリックし 「マッピングの設定」 をコンテキストメニューから選択します。「生成されたコード内でパスを絶対的にする」 チェックボックスがクリアされている状態でマッピングを保存します。
2.「ファイル」 メニューから 「MapForce Server 実行可能ファイルにコンパイルする」をクリックします。 これにより実行可能 .mfx ファイルが <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\ ディレクトリ内で生成されます。
3.生成された .mfx ファイルファイルをサーバーマシン上のディレクトリにコピーします (「作業ディレクトリ」と呼ぶことにします)。
4.Excel ファイルを <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\\Nanonull Inc.xlsx からサーバーマシン上の作業ディレクトリにコピーします。
5.ターミナルを開き、現在のディレクトリを作業ディレクトリに変更します。
6.MapForce Server を以下のコマンドを利用して実行します。使用中のオペレーティングシステムに適用できるように実行可能ファイルへのパスに対して mapforceserver_exec を調整します。

 

mapforceserver_exec run Excel_Company_To_JSON.mfx

 

サーバー実行内で、オンデマンド、または、再帰的なベースで、 API 呼出としてマッピングを実行、または、 FlowForce Server ジョブとして実行することができます。詳細に関しては、 MapForce Server 実行可能ファイルにマッピングをコンパイルする を参照してください。


(C) 2019 Altova GmbH