Exportieren von Daten in Excel-Datei mit SSIS

8

Ich habe das SSIS-Paket, das Daten von der Tabelle in die Excel-Datei exportiert

Kontrollfluss: -

Datenfluss: -

Das ist mein Schritt: -

  1. Drop Excel Tabelle
  2. Erstellen Sie eine Excel-Tabelle mit dem Format ab meiner Select-Abfrage, mit der ich Daten aus der Datenbank abgerufen habe
  3. Fügen Sie Daten aus der Datenbank in die Excel-Datei
  4. ein

Ich habe die Abfrage wie Select * From Table Where --Some Condition

verwendet

Ich erhalte 3000 Zeilen von 10000 Zeilen und lege diese 3000 Zeilen in mein Excel-Blatt. Aber wenn ich mein Excel-Blatt öffne, habe ich eine Bildlaufleiste gesehen, die bis zur 10000. Reihe reicht und damit endet auch meine Excel-Blattgröße. Wie kann ich meine Excel-Blattgröße reduzieren? mein Excel-Blatt enthält nur 3000 Zeilen, warum leere Zellen, die bis 10000. Reihe gehen?

SQL Server 2008 & amp; Visual Studio 2008 mit BIDS

    
Shaggy 01.01.2013, 10:24
quelle

2 Antworten

21

Ich glaube, Ihr Problem betrifft die Methode, mit der Sie die Datei erstellen. Sie haben zwei Alternativen und beide sollten Ihr Problem beheben:

Lösung # 1:

Sie können eine Excel-Datei mit diesen vordefinierten Spalten erstellen, im Wesentlichen Ihre leere Ausgabedatei - dies würde als Ihre "Vorlagendatei" dienen. Dein Flow wäre dann das:

  1. Dateisystem-Task - Kopieren Sie die Vorlagendatei in das Ausgabe- oder Arbeitsverzeichnis (benennen Sie sie ggf. um)
  2. OLEDB-Quellaufgabe - Abfrage Ihrer Quelle für die Daten (3000)
  3. Datenkonvertierungsaufgabe
  4. Excel-Zielaufgabe - Daten in eine neue Excel-Datei einfügen

Hinweis: Sie haben bereits die Schritte 2 bis 3 abgeschlossen. Sie müssen lediglich sicherstellen, dass Sie eine Verbindung mit der neuen Excel-Datei herstellen. Um zu verdeutlichen, befindet sich Schritt 1 außerhalb der Kontrollfluss-Aufgabe.

Dieser Weg ist hilfreich, weil Sie immer eine leere und konsistent formatierte Excel-Datei zum Kopieren und Arbeiten haben.

Lösung # 2:

Die andere Option besteht darin, eine Skriptaufgabe zu verwenden und die Excel-Datei zu erstellen - Sie können die Daten auch in diese Aufgabe laden. Dies erfordert ein grundlegendes Verständnis von VB.NET oder C #. Grundsätzlich müssten Sie eine XLS-Bibliothek (wie NPOI ) bekommen. Dies ist komplizierter, bietet Ihnen jedoch die beste Funktionalität.

Ich empfehle Ihnen, Lösung Nr. 1 zu probieren und zu sehen, wie das für Sie funktioniert.

    
user985189 04.01.2013, 15:31
quelle
2

Drop table SheetName löscht das Blatt nicht, sondern nur deletes the row . Wenn Sie zum ersten Mal 10K Zeilen geladen haben und dann das Paket erneut ausgeführt haben, indem Sie die Anzahl der Zeilen auf 3K beschränkt haben, enthält die Excel-Datei immer noch diese 10K leeren Zeilen, da das Blatt zusammen mit empty spaces beibehalten wird.

Sie können Skript-Aufgabe verwenden, um das Blatt mit COM-Objekten zu löschen. Dafür müssen Sie die Excel-PIA (Primary Interop Assemply) platzieren, um sie für VSA sichtbar zu machen oder eine neue Excel-Datei bei jeder Ausführung des Pakets zu erstellen / p>

Sonst wie von Nicarus vorgeschlagen, verwenden Sie File System Task , um die vorhandene Datei zu löschen und bei jeder Ausführung eine neue Excel-Datei zu erstellen.

Diagramm:

Dateisystemaufgabe:

Verwenden Sie die gleichen Komponenten und die Abfrage für Create Table mit Execute SQL task und Ihre DFT

    
praveen 07.01.2013 08:43
quelle

Tags und Links