0

csv データを Excel ファイルにエクスポートする SSIS パッケージを作成しようとしています。このパッケージは C# から呼び出され、パッケージへの入力として csv ファイルが提供されます。私は SSIS にまったく慣れていませんが、同じヘッダーで期待される結果を生成することができました。

私は次のアプローチを取りました-

  1. スクリプト タスク - csv ヘッダーからスクリプトを作成して、一時テーブル、一括挿入、Excel テーブル スクリプトを作成します。
  2. SQL タスクの実行 - データベースに一時テーブルを作成しました
  3. SQL タスクの実行 - csv データをテーブルに一括挿入する
  4. SQL タスクの実行 - Excel ファイルの作成
  5. データ フロー タスク - OleDB ソースから Excel 宛先へ
  6. SQL タスクの実行 - 作成された一時テーブルを削除します

私が直面している課題は、csv のヘッダーが異なる可能性があることです (テキストとヘッダーの数の両方が異なる場合があります)。そして、この目的を果たす単一のパッケージが必要です。

ヘッダーが異なるため、上記の手順 5 の OleDB ソースから Excel 宛先へのマッピングが動的ヘッダーに対して機能せず、Excel 出力で予期しない結果が得られます。これらのマッピングを設計時ではなく実行時に決定できる方法はありますか?

4

1 に答える 1

0

SSIS 実行時にデータ フローの列または列マッピングを指定できるとは思えません。オンザフライで SSIS パッケージをビルドすると、C# コードで列マッピングを作成できますが、パッケージを実行する前にマッピングを作成する必要があります。詳細については、MSDN のプログラムによるパッケージのビルドを参照してください。

一方、CSV ファイルを Excel スプレッドシートに変換するだけなら、Office オブジェクト モデルのWorkbook.SaveAsメソッドを使用するのが理にかなっているように思えます。

于 2013-02-18T23:35:24.590 に答える