Seriendruck: Mehrere Zeilen in einem Dokument zusammenfassen

Seriendruck: Mehrere Zeilen in einem Dokument zusammenfassen

Ich habe eine Excel-Datei mit unterschiedlichen Feldern in jeder Spalte:

Feld 1__ | Feld 2__ | usw.
F1 Element 1 | F2 Element 1 | usw.
F1 Element 2 | F2 Element 2 | usw.

Jedes Feld enthält eine unterschiedliche Anzahl Elemente.

Ich möchte ein Word 2010-Dokument erstellen, das alle Elemente in jedem Feld in einem Dokument auflistet und nicht für jeden Datensatz in mehrere Dokumente aufgeteilt wird. Das endgültige Word-Dokument sieht also folgendermaßen aus:

Feld 1
__ F1 Element 1
__ F1 Element 2

Feld 2
__ F2 Element 1
__ F2 Element 2
__ F2 Element 3

Die Beschriftungen „Feld 1“ und „Feld 2“ benötigen kein Serienbrieffeld, aber alle Elemente unter dem Feld müssen per Serienbrief zusammengefasst werden, um in einem Dokument angezeigt zu werden. Ist das möglich? Gibt es Ideen oder Ressourcen, wie das erreicht werden kann?

Antwort1

Ich würde hierfür ein Abfrage- und Berichtstool wie SQL Server Reporting Services verwenden. Sie können es über ODBC mit einer Excel-Datei verbinden, z. B.

http://weblogs.sqlteam.com/joew/archive/2008/08/22/60695.aspx

Der Berichtsentwurf würde zwei Tabellen umfassen – eine für Feld 1 und eine für Feld 2. Sie müssten zwei (ziemlich einfache) SQL-SELECT-Anweisungen schreiben, um die Daten als zwei Datasets zu erhalten.

Reporting Services macht beim Rendern in Word gute Arbeit. Das Layout kann weitaus komplexer sein als bei einem Word-Serienbrief, z. B. mehrere Datenbereiche, verschachtelte Unterberichte, komplexe Diagramme usw.

Sie können Reporting Services als Desktop-App ausführen, in eine Windows- oder Word-App einbetten oder auf einer SharePoint-Site oder einem einfachen Reporting Services-Portal bereitstellen.

Antwort2

DuMaiSie können hierfür das DATABASE-Feld von Word verwenden. Das Dialogfeld zum Einfügen eines solchen Felds befindet sich nicht im Menüband, Sie müssen es also in den Word-Optionen suchen und in die QAT oder etwas Ähnliches einfügen. Es weist jedoch ein oder zwei Probleme auf, daher ist es wahrscheinlich besser, das Feld manuell einzufügen - verwenden Sie Strg-F9, um ein Paar der speziellen Feldklammercodes einzufügen, sodass Sie

{  }

(Sie können diese Klammern nicht einfach auf der Tastatur eingeben).

Dann ist alles zwischen den { } normaler Text. Nehmen wir an, Ihr Excel-Dokument heißt c:\xl\mywb.xlsx, die Daten befinden sich in einem Blatt namens Sheet1$ und Sie haben 3 Felder namens Field1, Field2 und Field3. Dann kann Ihr erstes DATABASE-Feld folgendermaßen aussehen:

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

Bitte beachten Sie die doppelten Backslashs im Pfadnamen. Sobald Sie diese eingegeben haben, wählen Sie das Feld aus, drücken Sie F9, um es auszuführen, und verwenden Sie dann Alt-F9, um die Ergebnisse anzuzeigen. Wenn sie in etwa dem entsprechen, was Sie für Ihre erste Spalte benötigen, funktioniert dies möglicherweise für Sie. Wenn nicht, ist es wahrscheinlich an der Zeit, diesen Ansatz aufzugeben. Wenn ein Fehler gemeldet wird, liegt dies wahrscheinlich an einem Tippfehler.

Sobald Sie eine Spalte zum Laufen gebracht haben, kopieren/fügen Sie das Datenbankfeld ein und ändern Sie die Namen, so dass Sie

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf1.[field1] FROM [Sheet1$] cf1 WHERE ((cf1.[field1] IS NOT NULL ))" \h }

{ DATABASE  \d "C:\\xl\\mywb.xlsx" \s "SELECT cf2.[field2] FROM [Sheet1$] cf2 WHERE ((cf2.[field2] IS NOT NULL ))" \h }

Wählen Sie dann F9 und erneut Alt-F9. Wenn alles in Ordnung ist, wiederholen Sie den Vorgang für die restlichen Felder.

Einige Anmerkungen:

WHERE ((cf2.[field2] IS NOT NULL )) ist da, um mit der Tatsache umzugehen, dass Ihre Spalten unterschiedliche Anzahlen von Zellen enthalten. Aber Sie brauchen vielleicht etwas mehr als das, und diese Technik wird es beseitigenalleleere Zellen, nicht nur leere Zellen am unteren Ende der Spalte.

\h fügt lediglich eine Spaltenüberschrift hinzu.

„cf1“ und „cf2“ sind SQL-„Tabellenaliasnamen“. Sie können sie nach Bedarf erfinden. Sie sollten eigentlich nicht benötigt werden, sind aber vorhanden, weil Word ohne sie etwas verwirrt wird, wie Sie vielleicht feststellen, wenn Sie versuchen, diese Felder mithilfe des Dialogfelds „Datenbankfeld“ einzufügen (das diese Aliasnamen nicht einfügt).

verwandte Informationen