ExcelSimpleOutput - Excelデータへの出力

Excelファイルを作成しファイルへ出力します。本コンポーネントは使用メモリーを抑えて多大なレコードを出力する場合に使用します。
更新、削除処理、画像の出力には対応していません。

このコンポーネントではExcelの処理にApache POIを使用しています。
このコンポーネントを使用するには、Excelビルダーを起動して、テンプレートとするExcelファイルを読み込み、ワークブック上のセルをコンポーネントのフィールド定義と関連づける必要があります。

詳細については「Excelビルダーの使い方」を参照してください。

■ストリーム情報

入力フォーマットRecord
接続数1
説明 Excelファイルに書き込むレコードです。
Excelビルダーで定義したレコード領域に書き込みます。
レコード領域の指定方法については「Excelビルダーの使い方」を参照してください。
フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。
出力フォーマットRecord
説明 空のストリームを出力します。
入力をそのまま出力を「はい」にした場合は入力ストリームをそのまま出力します。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
テンプレートファイルパスremoteFile入力&出力 書き込むExcelファイルのパスを指定します。このファイルが存在しない場合、空のワークブックを作成して書き込みを行います。ファイル形式はxlsx形式に対応します。
テンプレートとして指定するシートに値や何らかの設定を持つセルがある場合は、それらのセルを含む全ての行より下の行にのみ値を出力することができます。
このファイル自体は更新されません。
相対パスの場合はファイルパスの起点 の指定に基づいて解釈されます。
保存ファイルパスremoteFile入力&出力 出力するExcelファイルのパスを指定します。ファイル拡張子はxlsx形式を指定してください。
相対パスの場合はファイルパスの起点 の指定に基づいて解釈されます。
ファイルパスの起点pathResolver-テンプレートファイルパス保存ファイルパス が相対パス指定の場合にベースフォルダーを指定します。
プロジェクトフォルダー [Relative]
プロジェクトファイルと同じフォルダーを起点にします。
ホームフォルダー [ProjectOwner]
ユーザーのホームフォルダーを起点にします。
実行ユーザーのホームフォルダー [ExecuteUser]
実行ユーザーのホームフォルダーを起点にします。
数値がnullの場合の処理choice入力&出力 シート上のセルに数値を書き込む際、数値がNullの場合に書き込む値を指定します。
0を書き込む [Zero] - 0を書き込みます。
空文字列を書き込む [Empty] - 空文字列を書き込みます。
入力をそのまま出力streamPassThrough- 出力ストリームの内容を指定します。
いいえ [false] - 空のストリームを出力します。
はい [true] - 入力ストリームを出力します。
シートcategory入力&出力 Excelビルダーで単一セル・レコードを定義したときのシート名が「定義上のシート名」にリストされます。各シートに対応する「書き出すシート名」に値を指定すると、定義したときのシート名に置き換えて、このシート名のシートを作成してセルにデータを出力します。
指定したシート名のシートがワークブック上に存在している場合はエラーになります。
書き出すシート名」はマッパーで値を変更可能なので、出力するシートをフロー中で動的に指定することができます。
単一セルcategory入力&出力 Excelファイル中の、Excelビルダーで定義した単一セル領域です。フロー実行時に、対応するセルにこのプロパティの値を書き込みます。
フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム220ワークブックを開けなかった場合。
221シートの「書き出すシート名」で指定したシート名のシートが既に存在している場合。
223ワークブックへの書き込みに失敗した場合。
224POIライブラリが作成した一時ファイルが正常に削除されなかった場合。
225指定したファイルパスに誤りがあった場合。
例:ファイルパスの起点 が「実行ユーザーのホームフォルダー」の場合に実行ユーザーが存在しないため相対パスが解決できなかった場合

■制限事項

書き込み可能なファイル、データについて

書き込み可能なファイルは、使用しているPOIのライブラリに準じます。
Excel2007より追加されたxlsx, xlsm形式のファイルに対応しています。
xls形式のファイルは対応していません。

グラフが挿入されたワークシートはサポートされません。

シート タブを使用してワークシートのコピーを行う場合、コピー元ワークシートのVBAマクロはコピーされません。

ブックの保護について

ブックの保護を設定することはできません。
ブックやシートが保護されたExcelファイルに書き込むことができるかどうかはExecelのバージョンにより異なります。
次の表を参照してください。

ExcelバージョンExcel2016Excel2019Excel2021
シート保護
シート保護パスワード付
ブック保護
ブック保護パスワード付
ファイル読み取りパスワード×××
ファイル書き込みパスワード
ファイル読み取り、書き込みパスワード×××

■結合セルについて

本コンポーネントは、値を書き込むセルに結合セルを指定することはできません。

■Excelビルダーの使い方

●Excelを使用するフローの開発手順

ExcelSimpleOutputコンポーネントを使ってExcelファイルを生成するフローを作成するには、次のような手順を用います。

ExcelSimpleOutputコンポーネントでは、コンポーネントプロパティの「単一セル」タブに指定した単一データやコンポーネントのストリームペインに定義したレコードデータを、出力するExcelワークシートの対応するセルやレコード領域に差し込むことができます。ExcelSimpleOutputコンポーネントの直前にMapperコンポーネントを配置することで、これらのデータを動的に差し込むことができます。

  1. フロー内にExcelSimpleOutputコンポーネントを配置する。
  2. ExcelSimpleOutputコンポーネントでExcelビルダーを起動する。Excelビルダーでは、テンプレートとなるExcelワークシートファイルを使用して、データを保存したいセルやレコード範囲をマウスで指定する。
  3. ExcelSimpleOutputコンポーネントのコンポーネントプロパティの「単一タブ」で、保存するセルのデータ型の指定を行う。
  4. ExcelSimpleOutputコンポーネントのストリームペインで、保存するレコードフィールドのデータ型の指定を行う。
  5. ExcelSimpleOutputコンポーネント上でテンプレートファイルパスと保存ファイルパスを設定する。

●Excelビルダーの起動

Excelビルダーは、Excel2016-2021上で動作するアドオンソフトウェアで、利用するには前記バージョンのMicrosoft Excelがあらかじめインストールされている必要があります。また、マクロとして動作するため、Excelの「オプション>セキュリティーセンター>マクロの設定」で「警告を表示してすべてのマクロを無効にする」を指定する必要があります。

Excelビルダーを起動するには以下の手順で行います。

  1. Excelビルダーは、ExcelSimpleOutputコンポーネントを右クリックして表示されるメニューの「Excelビルダー」をクリックするか、またはExcelSimpleOutputコンポーネントをダブルクリックします。
  2. Microsoft Excelが起動します。このExcelには、「ExcelBuilder」マクロアイコンが含まれています。マクロ有効化の確認ダイアログが表示された場合は「マクロを有効にする」をクリックしてください。
  3. データの入出力を行うためのテンプレートとなる任意のExcelワークシートを開きます。
  4. ExcelビルダーアイコンをクリックしてExcelビルダーダイアログボックスを表示させます。

●「単一セル」

単一セルタブは、セル単位でデータの出力を行うために、対象となるセルの設定を行います。Excelビルダーでは、これらのプロパティ、ストリームと、ワークシート上のセル領域との関連づけを行うことができます。単一セルを設定するには、「単一セル」タブを使用します。

追加

単一セル定義を追加します。「追加」ボタンをクリックすると、範囲指定のダイアログが表示されるので、Excelのワークシート上で単一のセルをポイントするか、セル位置を入力して、「OK」をクリックします。

続いて、項目入力のダイアログが表示されるので、項目名を入力し、「OK」をクリックします。この項目名はExcelコンポーネントの単一セル プロパティにおけるフィールド名になります。データの出力に結び付けたいセルの個数分、上記作業を繰り返します。追加されたセル定義は、「単一セル」タブに一覧表示されます。

変更

選択した単一セル定義を変更します。「変更」ボタンをクリックすると、範囲指定のダイアログが表示されるので、変更する場合は新しい値を入力します。変更しない場合はそのまま「OK」をクリックします。

続いて、項目名入力のダイアログが表示されるので、変更する場合は新しい値を入力し、「OK」をクリックします。

途中で「キャンセル」をクリックすると、セル定義は変更されません。

削除

選択した単一セル定義を削除します。削除したい単一セル定義を選択し、「削除」ボタンをクリックすると、項目が削除されます。

●「レコード」の設定

レコードタブは、レコード単位でデータの出力を行うために、対象となるレコード領域の設定を行います。レコード形式の繰り返しデータをExcelに書き込むには、レコード領域を設定します。レコード領域の設定には「レコード」タブを使用します。
レコード領域は1つだけ設定することが可能です。レコード領域を複数設定することはできません。
1レコードが複数行にわたるレコード領域も定義できます。
レコード領域は、レコードを書き込み始める位置とレコードのフィールドを指定するために使用します。よって1レコード分以上の領域を設定する必要はありません。

追加

レコード領域の定義を追加します。「追加」ボタンをクリックすると、範囲指定のダイアログが表示されるので、Excelのワークシート上で矩形領域を指定するか、セル領域を入力して、「OK」をクリックします。

続いて、レコード名入力のダイアログが表示されるので、レコード名を入力し、「OK」をクリックします。

次に、1レコードあたりの行数の入力ダイアログが表示されるので、1レコード複数行の場合は適宜変更し、「OK」をクリックします。

レコード範囲として設定した領域が登録されます。

変更

選択したレコード領域の定義を変更します。「変更」ボタンをクリックすると、範囲指定のダイアログが表示されるので、変更する場合は新しい値を入力します。変更しない場合はそのまま「OK」をクリックします。

続いて、レコード名入力のダイアログが表示されるので、変更する場合は新しい値を入力し、「OK」をクリックします。

次に、1レコードあたりの行数の入力ダイアログが表示されるので、変更する場合は新しい値を入力し、「OK」をクリックします。

途中で「キャンセル」をクリックすると、レコード領域の定義は変更されません。

削除

選択したレコード領域の定義を削除します。削除したいレコード領域の定義を選択し、「削除」ボタンをクリックすると、レコード領域の定義が削除されます。

レコードフィールド領域

レコード内のフィールド名を定義します。レコード領域の定義を選択すると、レコードフィールド領域にフィールドの「列(カラム)」、「行(ロー)」、「フィールド名」が表示されます。「行」は1レコードあたり複数行の場合のみ表示されます。「フィールド名」はExcelSimpleOutputコンポーネントの入力ストリームにおけるフィールド名が表示されます。初期状態のフィールド名は「列」と「行」を組み合わせた文字列となります。

変更

フィールド設定を変更したい場合は、フィールドを選択して「変更」ボタンをクリックします。フィールド名を入力するダイアログが表示されるので、新しい値を入力し、「OK」をクリックします。「キャンセル」をクリックするとフィールド名は変更されません。

フィールド名取得

ワークシート上の指定範囲からフィールド名となる文字列を一括して取得します。「フィールド名取得」ボタンをクリックすると、範囲指定のダイアログが表示されるので、フィールド名を含むセル領域を指定します。指定する領域は、1レコードあたり列数・行数に一致した大きさでなければなりません。デフォルトでは、レコード領域のすぐ上側の領域が選択されて表示されます。
指定された領域中で空のセルがある場合、対応するフィールド名は変更されません。また、改行文字を含むセルの場合は、改行文字をすべて取り除いた文字列がフィールド名に設定されます。

●Excelビルダーの終了

設定を完了したら、Excelビルダーの「登録」ボタンをクリックして設定情報を登録し、Excelビルダーを終了します。

登録

設定情報を登録します。「登録」ボタンをクリックすると、設定情報が登録され、Excelビルダーを終了します。

閉じる

Excelビルダーを終了します。「閉じる」ボタンをクリックすると、設定情報は登録されずに、Excelビルダーを終了します。Excelビルダーを終了後、さらにExcelを終了させると、フローデザイナーに戻ります。

●Excelコンポーネントのインスペクタ

Excelビルダーによってセルやレコードが定義され、登録されるとExcelコンポーネントのインスペクタ上のシート タブ、単一セル タブ、ストリームペインに設定された情報が登録されます。これらのデータはExcelコンポーネントにMapperコンポーネントを接続することでフロー内で変更が可能です。