ExcelSlim(Input) - Excelからの入力(スリムバージョン)

Excelファイルからセルのデータまたは書式情報を読み込み、ストリームまたはプロパティに出力します。
ExcelInputコンポーネントと比べて、セルデータの処理に最適化してあります。 このコンポーネントを使用するには、Excelビルダーを起動して、テンプレートとするExcelファイルを読み込み、ワークブック上のセルをコンポーネントのフィールド定義と関連づける必要があります。
詳細についてはExcelInputコンポーネントの「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ファイルは、Excel95以降の形式で保存し直す必要があります。

■制限事項

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

Excel95以降の形式のExcelファイルが読み込み可能です。ただし、一部の複雑なワークブックの場合に読み込みに失敗することがあります。

1ファイルで最大30MBまでの読み込みをサポートします。ただし、計算式の結果文字列については最大8KB(全角4096文字)までの制限があります。

値の型セル数の目安
数値180万セル
文字列120万セル(4バイト、全角2文字程度の場合)
30万セル(80バイト、全角40文字程度の場合)
3600セル(8Kバイト、全角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型として読み込んで使用されることを推奨します。