Excelファイルからセルのデータを読み込み、ストリームまたはプロパティに出力します。本コンポーネントでは、フロー実行時に、次のようなことができます。
詳細については下記トピック「Excelビルダーの使い方」を参照してください。
| 入力 | フォーマット | Binary |
|---|---|---|
| 接続数 | 1 | |
| 説明 | 読み込むExcelファイルのバイナリイメージ。 | |
| 出力 | フォーマット | Record |
| 説明 |
Excelファイル中の、Excelビルダーで定義したレコード領域の内容。 レコード領域が複数定義されている場合には、その数だけ出力ストリームが表示され、レコードの名前が各ストリームの名前となります。 フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。 |
| 名前 | プロパティ型 | マッピング | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|---|
| 空レコードを無視 | boolean | 入力&出力 |
空行の扱いを指定します。 ループの中でマッパーにより値が差し込まれた場合は、初回のみが有効となります。
|
||||||
| 計算結果の丸め処理 | boolean | - |
ワークブックに保存されている計算結果に丸め処理を行うかどうかを指定します。 エクセルは計算結果が数値である場合、64ビットの浮動小数点バイナリ値としてワークブックに保存しています。このため、計算結果によっては10進数で演算した値に誤差が生じる場合があります。 (例) 350 * 0.7 = 244.99999999999997 このような場合、エクセルは有効数字15桁までしか表示しないため、セル上には245と表示されます。計算結果の丸め処理を「はい」にすると、本コンポーネントの取得する値は、セル上に表示される値(表示桁数を最大にした場合)と同じになります。いいえにすると、本コンポーネントは、エクセルが内部的に保持する値をそのまま取得します。
|
||||||
| ループを開始 | loopProcess | - |
Excelビルダーで定義したレコード領域の複数レコードをまとめて出力するか1レコードずつループして出力するか選択します。
|
||||||
| シート | category | 入力&出力 |
Excelビルダーで単一セル・レコードを定義したときのシート名が「定義上のシート名」にリストされます。各シートに対応する「読み込むシート名」に値を指定すると、定義したときのシート名に置き換えて、このシート名のセルからデータを読み込みます。 このプロパティはマッパーで値を変更可能なので、入力するシートをフロー中で動的に選択することができます。 |
||||||
| 単一セル | category | 入力 |
Excelファイル中の、Excelビルダーで定義した単一セル領域です。フロー実行時に、対応するセルのデータがこのプロパティに読み込まれます。また、このプロパティは自動的にストリーム変数になります。本コンポーネントの後に連結したマッパーで、ストリーム変数として見えるようになっています。ストリーム変数については、フローデザイナーマニュアルのストリーム変数、コンポーネント定義のストリーム変数を参照してください。 フィールド名の定義はExcelビルダー上で行い、フローデザイナー上では変更できません。 |
Excelビルダーで定義したレコード領域に複数レコードが存在し、ループを開始が「はい」の場合にループの起点となります。
| コミット | 何もしません。 |
|---|---|
| ロールバック | 何もしません。 |
| タイプ | パラ メータ | エラー処理フロー へのストリーム | エラー コード | 説明 |
|---|---|---|---|---|
| 汎用 | なし | コンポーネントの入力ストリーム | なし | Excelビルダーで定義したセルから読み込めない場合 |
| なし | フローのフィールド型への変換エラーが発生した場合 | |||
| なし | サポートされない形式のExcelファイルを開こうとした場合。 Excel95以前の形式のExcelファイルは、Excel97形式で保存し直す必要があります。 |
Excel97以降の形式のExcelファイルが読み込み可能です。Excel95以前の形式はサポートされません。
1ファイルで最大10MBまでの読み込みをサポートします。ただし1セル中の文字列は最大8KB(全角4096文字)までとします。
Excelフォーマットでは1セルごとに10バイトから20バイト程度の付加情報があるため読み込むデータ量に比較してセル数は減少します。
値の型 セル数の目安 数値 60万セル 文字列 40万セル(4バイト、全角2文字程度の場合) 10万セル(80バイト、全角40文字程度の場合) 1200セル(8KB、全角4096文字程度の場合)
コンポーネントアイコンの右クリックメニューから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では計算誤差が表示上にも現われます。
エクセルでは、日付/時刻形式の書式設定が行われているセルに保持されている実際の値は、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(Input)コンポーネントを使ってExcelファイルを生成するフローを作成するには、次のような手順を用います。
Excel(Input)コンポーネントでは、読み込んだExcelワークシートの対応するセルのデータがコンポーネントプロパティの「単一セル」タブに、レコード領域のデータがコンポーネントのストリームペインに取得されます。Excel(Input)コンポーネントの直後にMapperコンポーネントを配置することで、これらのデータを動的に扱うことができます。
Excelビルダーは、Excel97-2007上で動作するアドオンソフトウェアで、利用するには前記バージョンのMicrosoft Excelがあらかじめインストールされている必要があります。またマクロとして動作するため、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ビルダーの「登録」ボタンをクリックして設定情報を登録し、Excelビルダーを終了します。
設定情報を登録します。「登録」ボタンをクリックすると、設定情報が登録され、Excelビルダーを終了します。
Excelビルダーを終了します。「閉じる」ボタンをクリックすると、設定情報は登録されずに、Excelビルダーを終了します。Excelビルダーを終了後、さらにExcelを終了させると、フローデザイナーに戻ります。
Excelビルダーによってセルやレコードが定義され、登録されるとExcelコンポーネントのインスペクタ上のシートタブ、単一セルタブ、ストリームペインに設定された情報が登録されます。これらのデータはExcelコンポーネントにMapperコンポーネントを接続することでフロー内で変更が可能です。