ExcelInput - Excelからの入力

Excelファイルからセルのデータを読み込み、ストリームまたはプロパティに出力します。本コンポーネントでは、フロー実行時に、次のようなことができます。

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

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

■ストリーム情報

入力フォーマットBinary
接続数1
説明読み込むExcelファイルのバイナリイメージ。
出力フォーマットRecord
説明 Excelファイル中の、Excelビルダーで定義したレコード領域の内容。
レコード領域が複数定義されている場合には、その数だけ出力ストリームが表示され、レコードの名前が各ストリームの名前となります。
フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。

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

名前プロパティ型マッピング説明
空レコードを無視boolean入力&出力 空行の扱いを指定します。
ループの中でマッパーにより値が差し込まれた場合は、初回のみが有効となります。
はい [true] - レコードとして定義した領域中の空行を無視して読み込みます。
いいえ [false] - 空行はすべてのフィールドが空のレコードとして読み込みます。
計算結果の丸め処理boolean ワークブックに保存されている計算結果に丸め処理を行うかどうかを指定します。
エクセルは計算結果が数値である場合、64ビットの浮動小数点バイナリ値としてワークブックに保存しています。このため、計算結果によっては10進数で演算した値に誤差が生じる場合があります。
(例) 350 * 0.7 = 244.99999999999997
このような場合、エクセルは有効数字15桁までしか表示しないため、セル上には245と表示されます。計算結果の丸め処理を「はい」にすると、本コンポーネントの取得する値は、セル上に表示される値(表示桁数を最大にした場合)と同じになります。いいえにすると、本コンポーネントは、エクセルが内部的に保持する値をそのまま取得します。
はい [true] - 有効桁数15桁として丸め処理を行う
いいえ [false] - 丸め処理を行わない
ループを開始loopProcess Excelビルダーで定義したレコード領域の複数レコードをまとめて出力するか1レコードずつループして出力するか選択します。
はい [true] - ループの起点となって1レコードずつストリームに出力します。
いいえ [false] - すべてのレコードがまとめてストリームに出力します。
シートcategory入力&出力 Excelビルダーで単一セル・レコードを定義したときのシート名が「定義上のシート名」にリストされます。各シートに対応する「読み込むシート名」に値を指定すると、定義したときのシート名に置き換えて、このシート名のセルからデータを読み込みます。
このプロパティはマッパーで値を変更可能なので、入力するシートをフロー中で動的に選択することができます。
単一セルcategory入力    Excelファイル中の、Excelビルダーで定義した単一セル領域です。フロー実行時に、対応するセルのデータがこのプロパティに読み込まれます。また、このプロパティは自動的にストリーム変数になります。本コンポーネントの後に連結したマッパーで、ストリーム変数として見えるようになっています。ストリーム変数については、フローデザイナーマニュアルのストリーム変数コンポーネント定義のストリーム変数を参照してください。
フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。

■ループ処理

Excelビルダーで定義したレコード領域に複数レコードが存在し、ループを開始が「はい」の場合にループの起点となります。

■トランザクション処理

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

■エラー処理

タイプパラ
メータ
エラー処理フロー
へのストリーム
エラー
コード
説明
汎用 なし コンポーネントの入力ストリーム なし Excelビルダーで定義したセルから読み込めない場合
なし フローのフィールド型への変換エラーが発生した場合
なし サポートされない形式のExcelファイルを開こうとした場合。
Excel95以前の形式のExcelファイルは、Excel97形式で保存し直す必要があります。

■制限事項

読み込み可能なファイルについて

Excel97以降の形式のExcelファイルが読み込み可能です。Excel95以前の形式はサポートされません。

1ファイルで最大10MBまでの読み込みをサポートします。ただし1セル中の文字列は最大8KB(全角4096文字)までとします。

値の型セル数の目安
数値60万セル
文字列40万セル(4バイト、全角2文字程度の場合)
10万セル(80バイト、全角40文字程度の場合)
1200セル(8KB、全角4096文字程度の場合)
Excelフォーマットでは1セルごとに10バイトから20バイト程度の付加情報があるため読み込むデータ量に比較してセル数は減少します。

複数レコード使用時の制限について

コンポーネントアイコンの右クリックメニューからExcel(Input)コンポーネントとExcelSlim(Input)コンポーネントを切り替える機能は、レコードが複数定義されている場合は動作しません。

■結合セルについて

本コンポーネントで、結合セルから値または書式情報を読み込む場合、結合セル範囲の左上のアドレスを指定してください。
たとえば、単一セルの場合、結合セルC3:D5からデータを読み込む場合、C3を指定します。
レコード領域の場合も同様に、1レコード1行の場合であれば、結合セルの一番左のフィールドから、1レコード複数行の場合であれば、結合セルの一番左上のフィールドから読み込むようにします。

■エクセルの計算誤差について

計算結果の丸め処理を「はい」にすると、エクセルの表示する計算結果と同じ値が得られますが、これは計算結果の内部表現値とは異なるため、注意が必要です。
たとえば、

  セルA1: 350
  セルA2: =A1*0.7
  セルA3: =A2-244
となっていた場合、書式設定で小数点以下15桁を表示するようにすれば、エクセル上でも、
  セルA1: 350.000000000000000
  セルA2: 245.000000000000000
  セルA3:    0.999999999999972
のようにA3では計算誤差が表示上にも現われます。
一方、本コンポーネントの計算結果の丸め処理を「はい」にし、セルA2の値を取得すると245になるので、この値からマッパーで244を引くと、1となり、セルA3とは異なる値になってしまいます。
つまり、計算結果の丸め処理を「はい」にした場合は、丸め誤差の発生したセルの値に対して、エクセルと本コンポーネントで同じ計算を行うと、計算結果が異なることがあり得るということになります。この点に十分留意して計算結果の丸め処理をご使用ください。

■日付セルの扱いについて

エクセルでは、日付/時刻形式の書式設定が行われているセルに保持されている実際の値は、1900年1月1日を1とし、以降24時間ごとに1を加算する浮動小数値となります。Excel(Input)コンポーネントおよびExcelSlim(Input)コンポーネントでこのようなセルの値を読み込む場合、DateTime型やDouble型として読み込む場合は結果が同一になりますが、String型をして読み込む場合は結果が異なります。Excel(Input)コンポーネントでは上記浮動小数値をString型に変換した文字列になるのに対して、ExcelSlim(Input)コンポーネントではフローサービスのDateTime型をString型に変換した文字列になります。これは各コンポーネントが使用する外部ライブラリの日付/時刻セルの扱いに違いがあることに起因するものです。
本コンポーネントではこのようなセルはDateTime型として読み込んで使用されることを推奨します。

■色名称文字列

本コンポーネントでエクセルファイルの書式情報から入出力に使用される色名称文字列は以下の通りです。
これはエクセルの標準色パレットに基づくものです。ユーザ定義のパレットはサポートされません。
書き込み時に大文字小文字は区別されません。読み込み時には小文字の名称となります。
名称色見本RGB16進数値
aqua 33cccc
black 000000
blue 0000ff
blue gray 666699
bright green 00ff00
brown 993300
coral ff8080
dark blue 000080
dark green 003300
dark purple 660066
dark red 800000
dark teal 003366
dark yellow 808000
gold ffcc00
gray 25% c0c0c0
gray 40% 969696
gray 50% 808080
gray 80% 333333
green 008000
ice blue ccccff
indigo 333399
ivory ffffcc
lavender cc99ff
light blue 3366ff
light green ccffcc
light orange ff9900
light turquoise ccffff
light yellow ffff99
lime 99cc00
ocean blue 0066cc
olive green 333300
orange ff6600
pale blue 99ccff
periwinkle 9999ff
pink ff00ff
plum 993366
red ff0000
rose ff99cc
sea green 339966
sky blue 00ccff
tan ffcc99
teal 008080
teal 008080
turquoise 00ffff
violet 800080
white ffffff
yellow ffff00

■Excelビルダーの使い方

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

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

Excel(Input)コンポーネントでは、読み込んだExcelワークシートの対応するセルのデータがコンポーネントプロパティの「単一セル」タブに、レコード領域のデータがコンポーネントのストリームペインに取得されます。Excel(Input)コンポーネントの直後にMapperコンポーネントを配置することで、これらのデータを動的に扱うことができます。

  1. フロー内にExcel(Input)コンポーネントを配置し、ExcelワークシートファイルをBinaryの入力ストリームとして渡す。
  2. Excel(Input)コンポーネントでExcelビルダーを起動する。Excelビルダーでは、テンプレートとなるExcelワークシートファイルから、データを取得したいセルやレコード範囲をマウスで指定する。
  3. Excel(Input)コンポーネントのコンポーネントプロパティの「単一セル」タブに表示された単一データのデータ型を設定する。
  4. Excel(Input)コンポーネントのストリームペインに表示されたレコードデータのデータ型を設定する。

●Excelビルダーの起動

Excelビルダーは、Excel97-2007上で動作するアドオンソフトウェアで、利用するには前記バージョンのMicrosoft Excelがあらかじめインストールされている必要があります。またマクロとして動作するため、Excel上でマクロの実行権限を「中」以下に設定する必要があります。

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

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

●「単一セル」

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

追加

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

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

変更

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

続いて、項目入力のダイアログが表示されるので、変更する場合は新しい値を入力し、「OK」をクリックします。途中で「キャンセル」をクリックすると、セル定義は変更されません。

削除

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

書式情報の設定

選択した単一セル定義について、どの書式情報を入力対象とするか設定できます。書式を読み込みたい単一セル定義を選択し、画面右側の「入力対象書式」ボックスから読み込みたい書式情報のチェックボックスをONにします。
入力対象とした書式情報は、単一セルの項目名の後ろに以下のような文字列を付加した形で、単一セルプロパティにおけるフィールド名になります。

  背景色      : [項目名]_Background
  文字色      : [項目名]_FontColor
  文字フォント: [項目名]_FontName
  文字サイズ  : [項目名]_FontSize
  文字スタイル: [項目名]_FontStyle
  表示形式    : [項目名]_Format
  計算式      : [項目名]_Formula
  コメント    : [項目名]_Comment       (※Excel(Input)では対応外)

●「レコード」の設定

レコードタブは、レコード単位でデータの入力を行うために、対象となるレコード領域の設定を行います。レコード形式の繰り返しデータをExcelから読み込むには、レコード領域を設定します。レコード領域の設定には「レコード」タブを使用します。
レコード領域は複数設定することが可能です。レコード領域を複数設定すると、レコードの数だけExcel(Input)コンポーネントの出力コネクタが増やされ、ストリームペインにフィールド定義が追加されます。
1レコードが複数行にわたるレコード領域も定義できます。その場合、レコード領域全体の行数が1レコードあたりの行数の整数倍になるように設定してください。

追加

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

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

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

変更

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

続いて、レコード名入力のダイアログが表示されるので、変更する場合は新しい値を入力し、「OK」をクリックします。途中で「キャンセル」をクリックすると、レコード領域の定義は変更されません。

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

削除

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

レコードフィールド領域

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

変更

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

レコードの終了条件

Excel(Input)コンポーネントから起動されるExcelビルダーでは、レコードの終了条件を設定することができます。Excelビルダーでは、レコードとして取得する行列範囲をあらかじめレコード範囲として設定しますが、実際のフローが実行されたときに、必ずしもこのレコード範囲内が全てレコードで埋まっているとは限りません。そのような場合、特定の列にレコードの終了を表す文字列(例:EOR等)を記述しておくことで、適切な行数のレコードを取得することができます。終了条件を空文字列("")にした場合、この列が空データの時、レコードは終了しているとみなされます。

書式情報の設定

各フィールドについて、どの書式情報を入力対象とするか設定できます。書式を読み込みたいフィールドを選択し、画面右側の「入力対象書式」ボックスから読み込みたい書式情報のチェックボックスをONにします。
入力対象とした書式情報は、フィールド名の後ろに以下のような文字列を付加した形で、出力ストリームにおけるフィールド名になります。

  背景色      : [フィールド名]_Background
  文字色      : [フィールド名]_FontColor
  文字フォント: [フィールド名]_FontName
  文字サイズ  : [フィールド名]_FontSize
  文字スタイル: [フィールド名]_FontStyle
  表示形式    : [フィールド名]_Format
  計算式      : [フィールド名]_Formula
  コメント    : [フィールド名]_Comment       (※Excel(Input)では対応外)

●書式情報

単一セルの各項目、レコードの各レコードフィールドについて、書式情報を読み込むように設定した場合、実際にエクセルファイルから読み込まれる値は次のようになります。

(※Excel(Input)ではコメントの入力は対応外)

●Excelビルダーの終了

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

登録

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

閉じる

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

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

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