Mehrere XML-Dateien anhand von Excel-Zeilen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Erstellen von Mappings > Dynamische Verarbeitung mehrerer Input- oder Output-Dateien >

Mehrere XML-Dateien anhand von Excel-Zeilen

Unten sehen Sie den Inhalt der Spreadsheet-Datei altova.xlsx aus dem Ordner ...\MapForceExamples\Tutorial. Die Datei besteht aus zwei Arbeitsblättern: Admin mit 10 und Development mit 11 Datenzeilen. Dieses Beispiel steht unter dem Namen Excel-Mapping-dyn.mfd im Ordner ...\Tutorial zur Verfügung.

 

 

Arbeitsblatt "Admin"

Arbeitsblatt "Development"

dyn-excel2xml3a

dyn-excel2xml3b

 

 

MapForce kann Excel-Komponenten je nach Komponentenoptionen auf zwei verschiedene Arten anzeigen und mappen. Die Standardeinstellung wird im Dialogfeld unten angezeigt. Das Kontrollkästchen "Arbeitsblätter nach Namen anzeigen" ist aktiviert, wenn Sie die Excel-Komponente zum ersten Mal einfügen.

excel2

 

So rufen Sie eine Arbeitsmappe auf, als würde es sich um ein einziges Arbeitsblatt handeln:

1.Klicken Sie in der Excel-Komponente auf das Symbol excel1-compicon neben Admin.

 

dyn-excel2xml4

 

2.Klicken Sie auf das Kontrollkästchen "Arbeitsblätter nach Namen anzeigen", um es zu deaktivieren.

Die benannten Arbeitsblätter sind nun nicht mehr zu sehen (siehe Abbildung unten). Statt dessen steht nun ein Eintrag "Arbeitsblattname" zur Verfügung.

dyn-excel2xml04

 

Ziel 1: Die Generierung separater Dateien für die einzelnen Arbeitsblätter, die die Personendatensätze jedes Arbeitsblatts enthalten.

 

Das Datenelement "Arbeitsblattname" legt die spezifischen Arbeitsblätter in der Arbeitsmappe fest, daher wird dieses Datenelement zum Aufteilen der Quelle in separate Dateien verwendet.

 

1.Ziehen Sie aus dem Bibliotheksfenster eine concat-Funktion in das Mapping unt fügen Sie eine Konstante ein.
 
dyn-excel2xml1

 

2.Erstellen Sie die Verbindungen wie oben gezeigt: Arbeitsblattname zu value1 und die Konstante zu value2.
3.Verbinden Sie den result-Parameter der concat-Funktion mit dem Datenelement File: der Zielkomponente. Beachten Sie, dass nun File: <dynamic> angezeigt wird.
4.Definieren Sie die restlichen benötigten Verbindungen.
5.Klicken Sie auf die Schaltfläche "Ausgabe", um das Ergebnis des Mappings zu sehen.

 

dyn-excel2xml5

 

Jeder Datensatz wird nun auf einem eigenen Vorschauregister angezeigt. Oben sehen Sie den ersten davon.

Wenn Sie auf die Pfeile "Vorheriges" und "Nächstes" ic-fwdback klicken, sehen Sie die einzelnen Dateien auf dem Ausgaberegister.

 

Anmerkungen:

Das Feld Arbeitsblatt liefert den ersten Teil des Dateinamens, also Admin.

 

Die Konstantenkomponente liefert die Dateierweiterung, d.h. .xml, also lautet der Name der ersten Datei Admin.xml. Admin.xml enthält alle Zeilen dieses Excel-Arbeitsblatts. Development.xml enthält die anderen Zeilen.

 

Durch Klicken auf die Schaltfläche "Alle speichern" ic-save-all-out können Sie die einzelnen Dateien direkt über das Ausgaberegister speichern, ohne Code generieren zu müssen.

 

 

Ziel 2: Die Generierung separater Dateien für jede einzelne Person in jedem Arbeitsblatt

 

1.Klicken Sie auf die Schaltfläche excel1-compicon neben den Arbeitsblättern, wenn Sie den Abschnitt oben erstellt haben und aktivieren Sie das Kontrollkästchen "Arbeitsblätter nach Namen anzeigen".

In der Komponenten werden nun die einzelnen Arbeitsblätter angezeigt: Admin und Development.

 

dyn-excel2xml2
2.Fügen Sie die concat-Funktionen und die Konstantenfunktionen wie gezeigt ein.

 

3.Fügen Sie eine zweite XML-Schema-Datei mit demselben Namen ein und erstellen Sie die Verbindungen wie gezeigt.

 

Da das Element "Zeilennummer" die einzelnen Personenzeilen im Arbeitsblatt bestimmt, ist dies das Datenelement, das wir zum Aufteilen der einzelnen Arbeitsblätter in separate Dateien verwenden werden.

 

Gehen Sie nun beim Admin-Arbeitsblatt-Datenelement in der Altova XLSX-Komponente folgendermaßen vor:

1.Erstellen Sie die Verbindungen wie oben gezeigt: Admin-Konstante zu value1, Zeilennummer zu value2 und .xml-Konstante zu value3.
2.Verbinden Sie den result-Parameter der concat-Funktion mit dem Datenelement File: der Zielkomponente. Beachten Sie, dass nun File: <dynamic> angezeigt wird.
4.Definieren Sie die restlichen benötigten Verbindungen.
5.Klicken Sie auf die Schaltfläche "Ausgabe", um das Ergebnis des Mappings zu sehen.

 

dyn-excel2xml6

 

Jeder Datensatz wird nun auf einem eigenen Vorschauregister angezeigt. Alle 10 Datensätze des Admin-Arbeitsblatts wurden auf separate Dateien aufgeteilt.

Wenn Sie auf die Pfeile "Vorheriges" und "Nächstes" ic-fwdback klicken, sehen Sie die einzelnen Dateien auf dem Ausgaberegister.

 

Anmerkungen:

 

Die Konstante Admin liefert den ersten Teil des Dateinamens, z.B. Admin.
Das Datenelement Row Number liefert die Zeilennummer aus dem Excel-Arbeitsblatt, z.B. 1.
Die Konstante .xml liefert die beim Speichern der Datei verwendete Dateierweiterung, also Admin1.xml, wie oben gezeigt.
Durch Klicken auf die Schaltfläche "Alle speichern" ic-save-all-out können Sie die einzelnen Dateien direkt über das Ausgaberegister speichern, ohne Code generieren zu müssen.

 

Um die Ausgabe des Arbeitsblatts "Development" zu sehen, klicken Sie auf die Schaltfläche "Preview" dieser Komponente und anschließend auf das Ausgaberegister, um das Ergebnis des Mapping zu sehen. 11 Datensätze wurden auf separate Dateien aufgeteilt.

 


© 2019 Altova GmbH