Excelデータの更新
Excelのシートへデータを書き込むには、ExcelOutputコンポーネントを利用します。データを読み込む ExcelInputコンポーネントと同様に、Excelビルダーを起動してデータ範囲やフィールドを指定し、マッピングによってストリーム変換します。
Excelファイルへデータを書き込むフローを作成する
1. 「ファイル」タブからFileGetコンポーネント(「ファイルを読み込みます」)を配置し、Excelファイルへ書き出すためのデータファイルへのファイルパスを指定して、ストリーム定義を設定する
2. Mapperコンポーネント、次に「Excel」タブからExcelOutputコンポーネント(「Excelファイルへデータを書き込みます」)をドラッグして配置する
3. 「ストリーム定義をRecordに変換します」というダイアログが表示されたら「はい」をクリックして閉じる
4. 必要に応じてその他のコンポーネントを配置し、接続する
ExcelOutputコンポーネントの直前に置いたMapperのコンポーネントのフィールド定義は、Excelビルダーにより設定されます。
Excelビルダーで書き込み範囲を指定する
1. 配置したExcelOutputコンポーネントをダブルクリックして、マクロを有効にしてExcelを起動し、書き込み先の実データファイル、もしくはデータ領域のテンプレートとしたい任意のExcelファイルを開く
2. Excelの「Flow Designer」タブをクリックし、「ExcelBuilder」アイコンをクリックして Excelビルダーを起動する
3. Excel ビルダーの「レコード」タブの「追加」をクリックし、表示されるダイアログでデータの書き込み範囲を指定して、レコード名、1レコードあたりの行数も指定する
4. レコード範囲を選択し、フィールド名を一括(「フィールド名取得」)もしくは個別に設定する
5. 単一セルに書き込むデータがある場合は、Excelビルダーの「単一セル」タブの「追加」をクリックして指定する
6. 「登録」をクリックし、確認のダイアログで「OK」をクリックして、Excel も終了する
Excelビルダーでの指定により、データの書き込み範囲と、コンポーネントのフィールド定義が設定されます。 次の手順で、データをマッピングにより対応付けます。
HINT
ExcelInput/ExcelOutputコンポーネントの処理では、指定領域の範囲内でデータの取得/更新が行われるため、3のレコード範囲の指定では、実データが入力される最大範囲を指定してください。
データ書き込みのマッピングを指定する
1. ExcelOutputコンポーネントを選択し、ストリームペインでフィールド定義が設定されていることを確認して、必要に応じデータ型を変更する
2. Excelビルダーで単一セルの範囲を指定した場合は、インスペクタの「単一セル」タブに情報が入力されていることを確認する
HINT
ExcelOutputコンポーネントの 「ファイルパス」プロパティ
「ファイルパス」プロパティには、書き込み用Excelファイルへのパスを指定します。指定したファイルが存在しない場合には、空のExcelブックが作成され書き込みが行われます。Excelビルダーでデータ範囲のテンプレートに使用したファイルへのパスを指定することもできますが、その場合は「ファイルを更新」プロパティを「いいえ」に設定して、テンプレートファイル自身が更新されないようにします。
3. ExcelOutputコンポーネントの「ファイルパス」プロパティに、データ書き込み用Excelファイルへのパスを指定し、「ファイルを更新」プロパティを「いいえ」に設定する
4. Mapperコンポーネントのフィールド定義が設定されていることを確認し、コンポーネントアイコンをダブルクリックしてマッピングウィンドウを表示する
HINT
ExcelOutputコンポーネントの「ファイルを更新」プロパティ
「ファイルを更新」プロパティでは、ファイルパスで指定したExcelファイルを更新するかどうかを指定します。「はい」(True)を指定すると、Excelファイルは更新されます。「いいえ」(False)を指定した場合には更新は行われず、更新されたファイルイメージのみがストリームに出力されるので、更新されたExcelファイルは、FilePutコンポーネントで指定します。
CAUTION
日付や数値のデータを出力する場合、ExcelOutputコンポーネントのフィールド定義に加え、Excel側での表示形式の設定が必要になる場合もあります。
5. Excelデータの書き込み処理に合わせて、マッピングを指定する
6. フロー画面に戻り、FilePutコンポーネントの「ファイルパス」プロパティに、書き込み先Excelファイルのパスを指定する
フローを実行すると、FilePutコンポーネントの「ファイルパス」プロパティで指定したExcelファイルの、指定した領域に、指定したデータが書き込まれます。
HINT
手順5では、入力側の4つのフィールドをそのまま出力側の4つのフィールドにマッピングしているほか、単一セルの「日付セル」には、マッパー関数のNow関数を利用して、今日の日付を「yyyy/MM/dd」の形式で出力するように設定しています。
Excelのレコード領域にデータを追加で書き込む
1. Excelファイルへデータを書き込むフローを作成し、レコード領域やフィールドを指定して、ExcelOutputコンポーネントの「ファイルパス」プロパティには、データ書き込み先のExcelファイルへのパスを指定する
2. ExcelOutputコンポーネントの「書出し処理」プロパティに「追加」を指定し、「ファイルを更新」プロパティは「はい」を指定する
HINT
ExcelOutputコンポーネントの「書出し処理」プロパティで「追加」を指定すると、(キーを指定していない場合)レコード領域の最終空白行にレコードが追加されます。