10

テーブルからExcelファイルにデータをエクスポートするSSISパッケージがあります

制御フロー:-

制御フロー

データフロー :-

ここに画像の説明を入力

これは私のステップです:-

  1. Excel テーブルをドロップ
  2. データベースからデータを取得するために使用した選択クエリの形式でExcelテーブルを作成します
  3. データベースから Excel ファイルへのデータの挿入

クエリライクを使用しましたSelect * From Table Where --Some Condition

10000 行から 3000 行を取得し、その 3000 行を Excel シートに入れます。しかし、Excelシートを開くと、10000行目までスクロールバーが表示されて終了するため、Excelシートのサイズも増加します。Excelシートのサイズを小さくするにはどうすればよいですか? 私のExcelシートには3000行しか含まれていないのに、なぜ10000行目まで空白のセルがあるのですか?

SQL Server 2008 & Visual Studio 2008 with BIDS

4

2 に答える 2

24

あなたの問題は、ファイルの作成に使用している方法にあると思います。2つの選択肢があり、どちらも問題を修正する必要があります。

解決策#1:

これらの事前定義された列、基本的には空の出力ファイルを使用してExcelファイルを作成できます。これは「テンプレートファイル」として機能します。その場合、フローは次のようになります。

  1. ファイルシステムタスク-テンプレートファイルを出力ディレクトリまたは作業ディレクトリにコピーします(必要に応じて名前を変更します)
  2. OLEDBソースタスク-データのソースをクエリします(3000)
  3. データ変換タスク
  4. Excelの宛先タスク-データを新しいExcelファイルに配置します

注:手順2から3はすでに完了しています。必要なのは、新しいExcelファイルに接続していることを確認することだけです。また、明確にするために、ステップ1は制御フロータスクの範囲外です。

この方法は、コピーして操作するための空白で一貫した形式のExcelファイルが常にあるため便利です。

解決策#2:

もう1つのオプションは、スクリプトタスクを使用してExcelファイルを作成することです。このタスクでデータをファイルにロードすることもできます。これには、VB.NETまたはC#の基本的な理解が必要です。基本的に、XLSライブラリ( NPOIなど)を入手する必要があります。これはより複雑ですが、最高の機能を提供します。

ソリューション#1を試して、それがどのように機能するかを確認することをお勧めします。

于 2013-01-04T15:31:09.510 に答える
2

Drop table SheetName代わりにシートを削除しませんdeletes the row。初めて10K行をロードし、行数を3Kに制限してパッケージを再度実行した場合、Excelファイルには、シートとともにシートが保持されるため、これらの10Kの空の行が含まれます empty spaces

スクリプトタスクを使用して、COMオブジェクトを使用してシートを削除できます。ただし、そのためには、Excel PIA(Primary Interop Assemply)を配置して、VSAで表示できるようにするか、パッケージが実行されるたびに新しいExcelファイルを作成する必要があります。

それ以外の場合、Nicarusが提案しているFile System Taskように、既存のファイルを削除し、実行のたびに新しいExcelファイルを作成します。

図:

ここに画像の説明を入力してください

ファイルシステムタスク:

ここに画像の説明を入力してください

とを使用するための同じコンポーネントとクエリをCreate Table使用Execute SQL taskしますDFT

于 2013-01-07T08:43:31.610 に答える