Beispiel: Konvertieren von Excel in JSON

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

Startseite >  Datenquellen und -ziele > JSON >

Beispiel: Konvertieren von Excel in JSON

In diesem Beispiel wird gezeigt, wie Sie mit MapForce anhand einer Excel-Datei ein JSON-Dokument erstellen. Die Excel-Quellarbeitsmappe besteht aus zwei Arbeitsblättern: Office und Staff. Das Arbeitsblatt Office enthält Informationen über die Firmenadresse, während das Arbeitsblatt Staff eine Liste aller Angestellten enthält.

mf_json_06

Arbeitsblatt "Staff"

Die Aufgabenstellung ist die folgende:

 

1.Extraktion der Daten aus der Excel-Datei und Konvertierung der Daten in ein JSON-Dokument.
2.In der JSON-Datei soll für jeden Angestellten festgelegt werden, ob seine Durchwahl (Phone Ext.) auch externen Kontakten zugänglich sein soll. Nur Durchwahlen von Mitarbeitern aus den Abteilungen Marketing und Verwaltung können von außerhalb zugänglich sein.
3.Die Freigaben der einzelnen Angestellten(durchwahlen) müssen in der JSON-Datei in Form eines numerischen Werts, der auch Null enthalten kann, angezeigt werden. Wenn nicht bekannt, müssen die Freigaben in der JSON-Datei als null angegeben werden.

 

Unten sehen Sie das Mapping dazu. Sie finden es unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\\Excel_Company_To_JSON.mfd.

mf_json_07

Excel_Company_To_JSON.mfd

Wie oben gezeigt, besteht das Mapping aus einer Excel-Quellkomponente und einer JSON-Zielkomponente. Beachten Sie, dass die beiden Arbeitsblätter der Excel-Datei wie in der Excel-Quellkomponente aufscheinen. Der Firmenname wird aus dem Arbeitsblatt Office gemappt, während der Rest der Felder aus dem Arbeitsblatt Staff gemappt wird. Wenn Sie sehen möchten, wie das Mapping zum Auslesen von Zeilendaten aus einzelnen Arbeitsblättern konfiguriert ist, klicken Sie auf die entsprechende AddRemove_Selections-Schaltfläche. In der Abbildung unten sehen Sie die Einstellungen für das Arbeitsblatt Staff.

mf_json_08

Gemäß der oben gezeigten Einstellung werden Zeilen ab Zeile 1 bis zum Ende (dynamisch) ausgelesen. Die erste Zeile ist eine Überschrift mit Spaltennamen, daher wurde das Kontrollkästchen Erste Zeile ist Kopfzeile... aktiviert. Außerdem ist im Dialogfeld die Art der Spalten A bis G sowie der Name, unter dem die jeweilige Spalte im Mapping angezeigt wird, definiert. Nähere Informationen zu Excel-Komponenten finden Sie unter Microsoft OOXML Excel 2007+.

 

Die Zielkomponente ist eine JSON-Struktur. Sie können JSON-Komponenten wie unter Hinzufügen von JSON-Dateien als Mapping-Komponenten beschrieben, zum Mapping hinzufügen. Die Struktur entspricht dem JSON-Schema employees.schema.json, welches sich im selben Ordner wie das Mapping befindet. Nähere Informationen zum Konfigurieren der JSON-Komponente finden Sie unter JSON-Komponenteneinstellungen.

 

Außerdem enthält das Mapping eine Reihe von Zwischenkomponenten. Bei der ersten handelt es sich um eine Wertezuordnungskomponente. Mit Hilfe dieser Komponente wird anhand der Abteilung entschieden, ob die Telefonnummer gemäß Punkt 2 oben extern freigegeben werden darf. Sie können die Einstellungen der Wertezuordnungskomponente durch Doppelklick auf deren Titelleiste anzeigen:

mf_json_09

Die obige Konfiguration kann folgendermaßen zusammengefasst werden: Wenn Department = "Administration" oder "Marketing", gib true zurück. Andernfalls gib false zurück. Der auf diese Weise ermittelte Wert true oder false wird anschließend in die JSON-Zieleigenschaft geschrieben. Nähere Informationen zu Wertezuordnungen finden Sie unter Verwendung von Wertezuordnungen.

 

Zuletzt wird schließlich mit Hilfe der Funktion exists ermittelt, ob in der Excel-Quelldatei im Kontext der einzelnen Zeilen ein Shares (Freigaben)-Wert vorhanden ist. Diese Funktion gibt einen Booleschen Wert true zurück, wenn der Wert vorhanden ist. Andernfalls wird false zurückgegeben. Der Ergebniswert true oder false wird anschließend als Input an eine If-Else-Bedingung geliefert. Bei false wird ein von einer Konstanten bereitgestellter leerer String an das Zieldatenelement Shares as null übergeben. Dieser leere Wert wird in der erzeugten JSON-Datei zu einer null, da dies, wie durch das Symbol disp_jsonnullangezeigt, der Datentyp des Datenelements Shares as null ist.

 

Wenn der Share-Wert des Angestellten numerisch ist, erfüllt er die If-Else-Bedingung nicht mehr und wird stattdessen über eine separate Verbindung in das Zieldatenelement Shares as number (vom numerischen Typ disp_jsonnumber) geschrieben.

 

Nähere Informationen zum Hinzufügen von Funktionen zu einem Mapping finden Sie unter Hinzufügen einer vordefinierten Funktion zum Mapping. If-Else-Bedingungen werden unter Filter und Bedingungen nähere beschrieben.

 

Ausführen des Mappings

Um in MapForce eine Vorschau auf die generierte Datei zu sehen, klicken Sie auf das Register Ausgabe. In der Abbildung unten sehen Sie nur ein Fragment der erzeugten JSON-Datei.

mf_json_10

Mapping-Ausgabe

Um die Mapping-Ausgabe in einer Datei zu speichern, wählen Sie eine der folgenden Methoden:

 

Klicken Sie im Menü Ausgabe auf Ausgabedatei speichern.
Klicken Sie auf die Symbolleisten-Schaltfläche Generierte Ausgabe speichern ic-save-sel-string .

 

Automatisierung mit MapForce Server

Wenn Sie MapForce Server lizenziert haben, können Sie das Mapping auch über die Befehlszeile auf einem Linux-, macOS- oder Windows-Rechner ausführen. Beachten Sie, dass bei Ausführung von Mappings auf einem Server normalerweise einige zusätzliche Schritte durchgeführt werden müssen, wie unter Vorbereiten von Mappings für die Server-Ausführung beschrieben. Im Folgenden wird beschrieben, was Sie tun müssen, um dieses Mapping auf einem Server auszuführen:

 

1.Klicken Sie mit der rechten Maustaste auf das Mapping und wählen Sie im Kontextmenü den Befehl Mapping-Einstellungen. Achten Sie darauf, dass das Kontrollkästchen Pfade im generierten Code absolut machen deaktiviert ist und speichern Sie das Mapping.
2.Klicken Sie im Menü Datei auf Zu MapForce Server-Ausführungsdatei kompilieren. Dadurch wird im Verzeichnis <Dokumente>\Altova\MapForce2019\MapForceExamples\ eine MapForce Server-Ausführungsdatei generiert.
3.Kopieren Sie die generierte .mfx-Datei in ein Verzeichnis auf den Server-Rechner (nennen wir es das "Arbeitsverzeichnis").
4.Kopieren Sie die Excel-Datei aus <Dokumente>\Altova\MapForce2019\MapForceExamples\\Nanonull Inc.xlsx in das Arbeitsverzeichnis auf dem Server-Rechner.
5.Öffnen Sie einen Terminal und ändern Sie das aktuelle Verzeichnis in das Arbeitsverzeichnis.
6.Führen Sie MapForce Server mit dem unten gezeigten Befehl aus. Passen Sie mapforceserver_exec an den Pfad der ausführbaren MapForce Server-Datei auf Ihrem Betriebssystem an.

 

mapforceserver_exec run Excel_Company_To_JSON.mfx

 

Sie können Mappings bei der Server-Ausführung auch als API-Aufruf oder als FlowForce Server-Auftrag (entweder bei Bedarf oder in regelmäßigen Abständen) ausführen. Nähere Informationen dazu finden Sie unter Kompilieren von Mappings zu MapForce Server-Ausführungsdateien.


© 2019 Altova GmbH