Von Excel zu XML (und zurück) 87

Artikelbild-204
Wie man aus einer Excel-Tabelle eine XML-Datei erstellt
 

Auch wenn wir Excel-Fetischisten das nicht so gerne hören:
Es gibt noch andere Systeme da draußen in dieser bösen Welt, mit denen man hin und wieder Daten austauschen muss. Insbesondere in Zeiten des allgegenwärtigen Internets erfreut sich hier ein Format besonderer Beliebtheit:

Das XML-Format.

Wie man seine Excel-Tabelle als XML-Datei speichert oder eine vorliegende XML-Datei in eine Excel-Tabelle importiert, zeige ich im heutigen Artikel.

Und so geht’s:

Was ist eine XML-Datei?

XML ist eine sogenannte Auszeichnungssprache, mit deren Hilfe man hierarchisch strukturierte Daten in einer Textdatei abspeichern kann (siehe dazu auch Wikipedia).

Eine solche Struktur besteht in einer XML-Datei aus einzelnen Elementen. Jedes Element kann entweder einen Text oder ein weiteres untergeordnetes Element enthalten. Dadurch kann also eine Verschachtelung von Elementen entstehen. Jedes Element ist dabei von einem Anfangs- und einem End-Auszeichner umschlossen, den sogenannten Tags. Dies sieht z.B. so aus:
<element>Name</element>

Und eine Verschachtelung könnte so aussehen:
<adresse>
<strasse>Musterstrasse</strasse>
<ort>Entenhausen</ort>
</adresse>

Das soll uns als Hintergrundwissen erst einmal reichen.

Die Ausgangstabelle

Ausgangsbasis für unsere Übung soll eine sehr einfache Adressenliste sein, bestehend aus folgenden Spalten:

Die Ausgangstabelle: Eine einfache Adressenliste

Die Ausgangstabelle: Eine einfache Adressenliste

(Diese Adressenliste kannst du bei Bedarf hier herunterladen)

Diese simple Liste soll nun in eine XML-Datei umgewandelt werden. Damit Excel weiß, wie die Struktur der XML-Datei aussehen soll und welche Datentypen für die einzelnen Elemente verwendet werden, brauchen wir eine sogenannte Schema-Datei.

Eine Schema-Datei erstellen

Wer sich etwas in die Materie einlesen möchte, sei auf diesen Wikipedia-Artikel verwiesen. Dort werden auch die verschiedenen Datentypen beschrieben.

Um eine Schema-Datei zu erzeugen, brauchst du einen einfachen Texteditor. Der Windows-Editor reicht für unsere Zwecke aus, etwas mehr Komfort und Übersicht bietet Notepad++ (einfach in die Suchmaschine deiner Wahl eingeben und kostenlos herunterladen)

In den Editor gibst du folgende Daten ein:

Die XML-Schema-Datei

Die XML-Schema-Datei

Achte bei der Eingabe unbedingt darauf, dass jedes geöffnete Element auch wieder geschlossen werden muss (Notepad++ unterstützt dich dabei).

Die allererste Zeile ist nicht kriegsentscheidend, gehört aber der Vollständigkeit halber zu einer „sauberen“ XML-Datei dazu:
<?xml version="1.0" encoding="UTF-8"?>

Damit legen wir eine Struktur fest, die aus dem Element „Adressen“ besteht, welches untergeordnete Elemente namens „Adresszeile“ enthalten kann. Dabei kann es keine oder beliebig viele Adresszeilen geben (Parameter minOccurs und maxOccurs).

Jedes Element „Adresszeile“ besteht wiederum aus den Unterelementen „Vorname“, „Name“, „Strasse“, „PLZ“ und „Ort“. Ich habe hier exakt die gleichen Bezeichnungen wie in der Excel-Tabelle verwendet, ebenso sollte die Reihenfolge Elemente genau mit der in der Tabelle übereinstimmen, das macht die anschließende Zuordnung einfacher.

Die Einrückungen sind nicht zwingend erforderlich, aus Gründen der Übersicht aber dringend zu empfehlen. So ist leichter zu erkennen, welche Elemente zusammengehören und ob jedes Element auch wieder geschlossen wurde.

Die Datei speicherst du anschließend unter dem Namen schema.xsd ab (wer sich die Tipperei ersparen möchte, kann sich hier die fertige Datei herunterladen)

Damit sind die Vorarbeiten abgeschlossen und wir wechseln wieder zu Excel.

Entwicklertools einblenden

Für den nächsten Schritt brauchen wir die Registerkarte mit den Entwicklertools, die standardmäßig in Excel nicht angezeigt wird. In diesem Artikel habe ich für die verschiedenen Excel-Versionen beschrieben, wie man dieses Menü einblendet.

Öffne nun die Entwicklertools und klicke dort auf die Schaltfläche „Quelle“:

Entwicklertools: Quelle

Entwicklertools: Quelle

Dadurch wird rechts der Arbeitsbereich „XML-Quelle“ eingeblendet, in dem du dann unten auf die Schaltfläche „XML-Zuordnungen…“ klickst:

XML-Zuordnungen verwalten

XML-Zuordnungen verwalten

In dem sich nun öffnenden Fenster wählst du über die Schaltfläche „Hinzufügen…“ die zuvor erstellte Datei „schema.xsd“.

Die Schema-Datei hinzufügen

Die Schema-Datei hinzufügen

Nur kommt ein Fenster, in dem man den sogenannten Wurzelknoten auswählen muss, also die oberste Ebene in unserer Struktur. In unserem Beispiel ist das der Eintrag „Adressen“:

Das Wurzelelement auswählen

Das Wurzelelement auswählen

Wenn du danach die beiden Fenster mit OK geschlossen hast, sollte der Arbeitsbereich „XML-Quelle“ wie folgt aussehen:

Die vorhandene XML-Zuordnung...

Die vorhandene XML-Zuordnung.

Klicke jetzt auf das oberste Element „Adressen“ und ziehe es mit der Maus nach links über die Excel-Tabelle und lasse es es ganz links oben über der Überschrift „Vorname“ fallen.

... muss der Tabelle zugewiesen werden

… muss der Tabelle zugewiesen werden

Die Tabelle verwandelt sich jetzt in eine formatierte Tabelle:

Formatierte Tabelle mit XML-Zuordnung

Formatierte Tabelle mit XML-Zuordnung

Solltest du die XML-Zuordnung an der falschen Stelle fallengelassen haben, drücke einfach die Tastenkombination Strg+Z, um die Aktion rückgängig zu machen, und versuche es anschließend nochmal.

Dass es sich dabei aber nicht um eine „normale“ formatierte Tabelle handelt, erkennt man an verschiedenen Stellen Wenn man rechts im Fenster „XML-Quelle“ auf eines der Adressenelement klickt, wird die entsprechende Spalte in der Tabelle markiert. Daran sieht man auch, ob die Zuordnung richtig funktioniert hat:

Ausgewählte Felder werden markiert

Ausgewählte Felder werden markiert

Außerdem enthält das Kontextmenü der Tabelle einen neuen Eintrag. Führe einen Rechtsklick mit der Maus irgendwo innerhalb der Tabelle aus und du findest jetzt den Menüpunkt „XML“:

Das neue Kontextmenü XML

Das neue Kontextmenü XML

Der letzte Schritt: Die XML-Datei erstellen

Wenn du bis hierher folgen konntest, hast du alles richtig gemacht und kannst jetzt endlich die XML-Datei erstellen. Wähle dazu entweder in dem oben gezeigten Kontextmenü den Punkt „XML | Exportieren…“ oder die gleichlautende Schaltfläche in den Entwicklertools.

Du brauchst nur noch den gewünschten Speicherort auszuwählen und einen Dateinamen einzugeben. Der Dateityp ist automatisch auf „XML-Dateien (*.xml) voreingestellt:

Die Tabelle in eine XML-Datei exportieren

Die Tabelle in eine XML-Datei exportieren

Zur Kontrolle des Ergebnisses kannst du die Datei in deinem Texteditor oder auch in einem Webbrowser öffnen:

Die XML-Datei im Webbrowser

Die XML-Datei im Webbrowser

…und anders herum geht natürlich auch!

Selbstverständlich kannst du diese XML-Definition jetzt auch dazu nutzen, die XML-Datei wieder in eine Excel-Tabelle umzuwandeln. Dazu löschen wir erst alle vorhandenen Datensätze aus der Tabelle, die formatierte Tabelle an sich muss aber erhalten bleiben:

Tabelle leeren

Tabelle leeren

Du ahnst es vermutlich schon: Ein Rechtsklick in die Tabelle, dann die Option „XML | Importieren…“ (oder der gleiche Pfad über die Entwicklertools) bringen dich zur Auswahl der zu importierenden XML-Datei:

XML-Datei für den Import auswählen

XML-Datei für den Import auswählen

Und schon ist die Adressenliste in Excel wiederhergestellt.

Ein kleiner Tipp zum Schluss

Es könnte ja sein, dass du regelmäßig deine Adressentabelle durch einen XML-Import erweitern musst. Standardmäßig wird die vorhandene Tabelle aber immer überschrieben. In den Entwicklertools gibt es aber die Schaltfläche „Eigenschaften zuordnen“. In dem sich nun öffnenden Fenster aktivierst du einfach die Option „Vorhandene XML-Tabellen um neue Daten erweitern“ und schon werden alle neuen Datensätze unten an die Tabelle angehängt:

Neue Datensätze anfügen

Neue Datensätze anfügen

 

Wenn dir der Artikel gefallen hat: Bitte weitersagen!
Das könnte dich auch interessieren:
Und immer daran denken: Excel beißt nicht!

P.S. Die Lösung ist immer einfach. Man muss sie nur finden.
(Alexander Solschenizyn)

P.P.S. Das Problem sitzt meistens vor dem Computer.



Avatar-Foto

Über Martin Weiß

Er ist das Gesicht hinter dem Blog "Der Tabellenexperte". Seit 2013 veröffentlicht er hier Beiträge zu seinem Lieblingsprogramm: Microsoft Excel. Martin Weiß ist zertifizierter Microsoft Excel Expert und verdient sein Geld als selbständiger Excel-Berater, -Entwickler und -Trainer.

Schreibe einen Kommentar zu Samuel Vargian Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

87 Gedanken zu “Von Excel zu XML (und zurück)

  • Avatar-Foto
    Géza

    Hallo Martin,
    ich bin von deinen Beiträgen immer wieder begeistert. Oft kenne ich bereits einen Weg, du öffnest aber auch oft Kapitel auf, die ich noch nicht gelesen oder erlebt habe. Zudem gibt es wirklich immer mehrere Wege zum Ziel.
    Vielen Dank, weiter so!

    • Avatar-Foto
      Martin Weiß

      Hallo Géza,

      vielen Dank für dein schönes Feedback und ich bin genau Deiner Meinung: Viele Wege führen nach Rom!

      Schöne Grüße,
      Martin

  • Avatar-Foto
    BoRado

    Hallo Martin,
    bei meinem Excel (Office 2016) taucht nach dem Zuweisen der Zuordnung „Adressen“ zu Zelle „Vorname“ kein Eintrag „XML“ im Kontextmenü auf. Auch in den Entwicklertools enthält der Eintrag XML in den Ribbons lediglich den Button „Quelle“. Der öffnet/schließt aber lediglich das schon bekannte XML-Quelle-Dialog-Fenster. Muss die XML-Funktionalität womöglich noch irgendwo aktiviert werden?
    Beste Grüße und danke für die vielen tollen Tipps,
    BoRado

    • Avatar-Foto
      Martin Weiß

      Hallo Bo,

      wurde die Adressenliste durch die Zuordnung tatsächlich in eine formatierte Tabelle umgewandelt? Wenn nicht, wäre das ein Indiz dafür, dass die Zuordnung nicht geklappt hat.
      Beim Öffnen der schema.xsd wird man gefragt, welcher Eintrag der Wurzelknoten sein soll: Adressen oder Adresszeile. Hattest Du hier vielleicht fälschlicherweise „Adresszeile“ ausgewählt?
      Du könntest noch versuchen, jedes Element einzeln zuzuordnen. Also rechts aus der XML-Quelle das Feld Vorname nach links in die Tabelle auf das Feld Vorname ziehen usw. Dabei sollte jedesmal das betreffende Feld als formatierte Tabelle angezeigt werden.

      Ansonsten fällt mir spontan auch nichts anderes ein. Die XML-Funktionalität muss meines Wissens nach nirgendwo explizit aktiviert werden.

      Schöne Grüße,
      Martin

      • Avatar-Foto
        BoRado

        Hallo Martin,

        auch die wiederholte Zuordnung unter genauer Beachtung Deiner Hinweise – danke auch dafür – hat leider keine Veränderung herbeigeführt. Nach wie vor keine XML-Funktionalität in Kontextmenü oder Ribbons. Mal sehen, was die Suchmaschine mit den vielen „G’s“ und „O’s“ dazu sagt.

        Beste Grüße,
        BoRado

        Excel-Version: Microsoft Office Professional Plus 2016

      • Avatar-Foto
        BoRado

        Hallo Martin,

        mit Unterstützung von Luschi (Herber-Forum) hat zu guter letzt nur die komplette De- und Neuinstallation des Office Pakets geholfen, die XML-Funktionalität wieder herzustellen. Die Office-eigene Reparatur-Funktion hatte auch keine Wirkung. Anscheinend war das entsprechende Office-Modul dauerhaft abgeraucht.
        Vielen Dank für Support und Tipps. Oft hilft das schon, um nicht zu früh genervt das Handtuch zu werfen… 😉

        Beste Grüße,
        Bo Rado

        MS-Office Professional Plus 2016

        • Avatar-Foto
          Martin Weiß

          Hallo Bo,

          dass die Office-Installation zerschossen war, damit konnte natürlich keiner rechnen. Aber schön, dass Du noch Unterstützung gefunden hast und danke für die Rückmeldung.

          Schöne Grüße,
          Martin

  • Avatar-Foto
    Henrich

    Danke bin immer wieder begeistert über die informativen Beiträge!
    Ich hätte eine Frage: Wenn man auf eine strukturierte Tabelle mit Namen ‚Adressen‘ zugreifen will, wie die obige mit der Spalte ‚Vorname‘.
    Gibt es eine einfache Möglichkeit z.B. auf die 5. Zeile des Datenbereiches von Vorname zuzugreifen. Dabei würde ich gerne den Verweis mittels der strukturierten Methoden durchführen. Also in etwa so ‚=Adressen[[Vorname][#Daten]];Zeile5‘ (so geht es natürlich nicht!)
    Gibt es so was?
    Danke
    Heinrich

    • Avatar-Foto
      Martin Weiß

      Hallo Heinrich,

      freut mich, wenn die Artikel nützlich sind.
      Was Deine Frage zu den strukturierten Verweisen angeht, muss ich Dich leider enttäuschen. Die von Dir angedachte Möglichkeit gibt es leider nicht. Nur für Verweise auf Elemente in der gleichen Zeile gibt es einen strukturierten Verweis mit dem @-Symbol, z.B. [@Vorname].
      Sobald ein Element in einer andere Zeile angesprochen werden soll, muss man leider auf normale Bezüge zurückgreifen.

      Schöne Grüße,
      Martin

      • Avatar-Foto
        Florian Clemens Unterberger

        Ist es noch immer so, dass ich über strukturierte Verweise keine Elemente in anderen Zeilen ansprechen kann?

        • Avatar-Foto
          Martin Weiß

          Hallo Florian,

          ja, es ist immer noch so. Mit strukturierten Verweisen lassen sich nur Elemente in der aktuellen Zeile oder oben komplette Spalten ansprechen. Einzelne Zellelemente in anderen Zeilen müssen mit normalen Zellbezügen angesprochen werden.

          Schöne Grüße,
          Martin

      • Avatar-Foto
        Jochen Seyffert

        Eine andere Möglickeit bestünde darin, mit BEREICH.VERSCHIEBEN zu arbeiten, dann kann man auch Werte aus der vorherigen/nachfolgenden Zeile abfragen ohne den normalen Zellbezug zu nutzen.
        Um auf eine bestmmte Zeile innerhalb der Tabelle zuzugreifen könnte man auch die INDEX-Funktion nutzen.

  • Avatar-Foto
    nellybellyxd

    Hallo Martin!
    Der Artikel hat mir extrem geholfen und stellt eine enorme Erleichterung dar!
    Ich hätte aber eine Frage kann ich mit so einem Schema irgendwie folgende Form für die XML erzielen:

    usw

    Ich müsste teilweise ein paar Infos mehr pro Tag speichern, die ich aber immer das gleiche Schema haben. Also eine Art bezeichner.
    Schon einmal vielen Dank!

    • Avatar-Foto
      Martin Weiß

      Hallo nellybellyxd,

      ich fürchte, bei Deinem Kommentar sind leider ein paar wesentliche Infos verloren gegangen…
      (Bilder kannst Du selbst nicht anhängen, aber Du kannst mir eines per E-Mail zusenden und ich füge es ein)

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Thomas

    Hallo Martin

    Top Beitrag!!
    Ich kann das gerade für ein Projekt sehr gut gebrauchen.
    Klappt auch alles so wie es soll, bis auf eines 🙁
    Ich würde gerne Zeilen und Spalten tauschen.
    Also nicht von links nach rechts sondern von oben nach unten arbeiten. Aber Excel sagt ja logischerweise, wenn ich die zweite Zeile auswähle das die Spalte schon zugeordnet ist. Gibt es da eine Möglichkeit?

    Gruß
    Thomas

    • Avatar-Foto
      Martin Weiß

      Hallo Thomas,

      die Umwandlung in ein XML (und zurück) funktioniert nur mit einem „normalen“ Tabellenaufbau, also Spaltenüberschriften oben und alle Datensätze untereinander in je einer eigenen Zeile.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Jonas

    Hallo Martin,
    ich kenne mich leider mit Excel und besonders XML kaum aus. Deswegen meine Frage:
    Ist es möglich in einen XML Code bestimmte Zahlenwerte (die in einer Exeltabelle stehen) automatisiert zu verändern und abzuspeichern und wenn ja wie? Das Endergebniss soll immer wieder der selbe Code, in einer neuen XML-Date, mit geänderten einzelnen Werten sein.
    Vielen Dank schon mal für die Antwort.

    Liebe Grüße

    • Avatar-Foto
      Martin Weiß

      Hallo Jonas,

      du kannst mit den im Artikel gezeigten Mitteln XML-Dateien aus Excel-Dateien erstellen. Was damit nicht möglich ist, ist gezielt einzelne Werte in einer bestehenden XML-Datei damit zu verändern.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Ulrich Kölling

    Hallo Martin,

    habe Deine Excel-Tabelle erweitert durch weitere Spalten und diese dann in die xml-Datei engefügt.
    Leider kommt dann folgende Fehlermeldung:
    „Der Vorgang kann nicht ausgeführt werden, da das Ergebnis einen externen Datenbereich oder eine PivotTabelle überlappen würde.“

    Woran kann das liegen?

    • Avatar-Foto
      Martin Weiß

      Hallo Ulrich,

      handelt es sich bei Deiner Tabelle vielleicht um eine Abfrage, die aus Power Query oder aus anderen externen Quellen kommt? Dann geht die Zuordnung nicht.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Igor Massold

    Hallo Martin,
    da ich leider im Internet nichts zu meinem Fehler gefunden habe, beschreibe ich mein Problem nun hier. Vielleicht kannst du mir ja auf die Sprünge helfen.
    Es geht um eine Zahlungsdatei (XML) die aus SAP generiert(exportiert) wird. Diese wollte ich nun anpassen. Zuerst habe ich diese Datei als Quelle genommen, dadurch wird sie als Schemadatei definiert (sowie ich es verstehe). Allerdings sind die Werte der Zahlungsdatei nun festgeschrieben und können nicht geändert werden.
    Da ich nicht so schnell aufgeben wollte und der Meinung war das es evtl. eine XSD, die keine Werte enthält, geben muss. Kurze Zeit später bin ich bei github fündig geworden:

    Dieses Schema habe ich dann in Excel als Quelle genommen. Ein Import unsere Zahlungsdatei hat funktioniert und zeitgleich aufgezeigt das nur ein Bruchteil der vorhandenen Elemente verwendet werden. Als nächstes habe ich die Daten angepasst und versucht diese in eine neue XML-Datei zu exportieren. Leider erfolglos:

    „Die XML-Daten können nicht exportiert oder gespeichert werden. Die XML-Zuordnung in diesem Arbeitsblatt ist nicht exportierbar.“

    Hast du evtl. eine Idee wodran der Export scheitert. Ich finde hierzu leider nichts.
    Ich habe versucht die nicht genutzten Elemente zu entfernen und die dazugehörigen Spalten zu löschen. Dies hat leider auch nicht zum erfolgreichen exportieren geführt 🙁

    Vielen Dank im Voraus

    Grüße
    Igor

    • Avatar-Foto
      Igor Massold

      PS: Folgende Hinweise werden ausgegeben wenn ich auf „XML-Zuordnungen zum Exportieren überprüfen…“ klicke:

      *Name Arbeitsmappe* ist aufgrund des folgenden Inhalts nicht exportierbar:
      – Liste aus Listen
      – Denormalisierte Daten
      – Eine zugeordnete Elementverbindung mit anderen Elementen kann nicht beibehalten werden

      • Avatar-Foto
        Martin Weiß

        Hallo Igor,

        die genannte Fehlermeldung sagt mir jetzt nichts, aber ich vermute, dass die Schema-Datei nicht zu deiner bereits importierten Zahlungsdatei passt. Stimmt die Reihenfolge deiner Tabellenfelder exakt mit der Reihenfolge in der Schema-Datei überein? Einen besseren Tipp kann ich dir leider nicht geben.

        Schöne Grüße,
        Martin

        • Avatar-Foto
          Matthias

          Hallo,

          ich habe das Telefonbuch aus der FRITZ!Box in Excel importiert.

          Sobald ich (auch ohne Änderung von Daten) in Excel auf „XML-Zuordnungen zum Exportieren überprüfen…“ klicke,
          erhalte ich die gleiche Meldung wie „Igor Massold“:
          ————————————————–
          *Name Arbeitsmappe* ist aufgrund des folgenden Inhalts nicht exportierbar:
          – Liste aus Listen
          – Denormalisierte Daten
          – Eine zugeordnete Elementverbindung mit anderen Elementen kann nicht beibehalten werden
          ————————————————–

          Ich habe dann die XML zur XSD konvertiert.
          Aber auch hier kommt die gleiche Meldung.

          Hier kann man sich meine XSD vom FRITZ!Box-Telefonbuch herunterladen:
          https://c.web.de/@805356675996319896/9yZZA5cDSyGCM2N93NiEag

          Vll. könnte da ein Experte mal drüber schauen.
          Wäre total nett…

          Viele Grüße
          Matthias

          P.S. Ich will vermeiden, dass ich alle Kontakte manuell ins FRITZ!Box-Telefonbuch eingeben muss.

  • Avatar-Foto
    Frank Kraft

    Interessant!

    Kann man auch geschachtelte XML damit verarbeiten?

    Sagen wir eine Liste Kundenaufträgen, die Köpfe haben mit je 10 Feldern und jeder Kundenauftrag hätte 5 Positionen mit je 7 Feldern. Also 50 Positionen insgesamt.
    Es ließe sich schwer in einer flachen Excel Liste darstellen.
    Muss man dazu mehrere Tabs verwenden?
    Und wie stellt man dann den Bezug zwischen Kopf und Positionen her?

    Bin gespannt auf die Antwort.

  • Avatar-Foto
    Ron

    Beim Export nach XML wird die Verknüpfung zur XML-Schema nicht mit exportiert. Bei einem erneuten Import der XML werden somit die Formate des XML-Schemas (z.B. Führende Nullen in einer Spalte) nicht eingehalten. Ist dies durch eine Option beim Export realisierbar oder funktioniert dies nicht?

    • Avatar-Foto
      Martin Weiß

      Hallo Ron,

      das XML-Schema wird in der ursprünglichen Excel-Datei mitgespeichert, aus der man die Daten nach XML importiert hat. Wenn die XML-Datei später wieder in diese Arbeitsmappe importiert wird, werden auch die Formate richtig angewendet.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Lutz Z.

    Dieser Tip ist super, vielen Dank dafür. Da mein Problem ziemlich ähnlich war konnte ich 60% sofort nutzen.

  • Avatar-Foto
    Corinne

    Hallo Martin
    Danke für die Anleitung. Zuerst hatte ich immer eine Fehlermedlung erhalten, als ich die xsd-Datei hinzufügen wollte. Grund dafür, ist die nicht vollständige Zeile 2 (wen man diese Zeile einrechnet: ).
    In der Vorlage zum Download steht nur:

    statt:

    Im Anschluss hatte es geklappt.

    • Avatar-Foto
      Corinne

      xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema“

      statt nur: xs:schema
      Alles umgeben von spitzen Klammern, aber die sind rausgefallen.

      • Avatar-Foto
        Martin Weiß

        Hallo Corinne,

        vielen Dank für den Hinweis, ich habe die Download-Datei jetzt angepasst.

        Schöne Grüße,
        Martin

  • Avatar-Foto
    Leo E. Kröll

    Ein guter Artikel, vor allem, da mir versichert wurde, in Excel könne keine XML Datei erzeugt werden. Jetzt gebe ich mich ans testen und bin gespannt, wie oft ich mich bei der Schema Datei vertippe ;-))
    Danke für diese Hilfer

    • Avatar-Foto
      Martin Weiß

      Hallo Leo,

      das Einlesen von XML’s in Excel klappt in der Regel ganz gut. Lediglich beim Exportieren/Speichern von komplexen XML’s (also mit mehreren Unterebenen) stößt man an Grenzen.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Senese

    Hallo Martin,
    vielen Dank für diese detaillierte und gut nachvollziehbare Beschreibung. War genau das was ich gesucht habe. Eine verständliche Handlungsanweisung schreiben: Kann ich auch. Denken viele. Aber es verlangt Konzept und Struktur, sowie eine wohl überlegte zielgruppenorientierte Wortwahl. Würdest du Bücher schreiben zu den Themen die ich benötige, würde ich bei dir zuschlagen.

    • Avatar-Foto
      Martin Weiß

      Hallo Senese,

      vielen Dank für dieses tolle Feedback, bei soviel Lob werde ich gleich rot 🙂

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Simone St.

    Hallo Martin,
    vielen Dank für Deine nützlichen Tipps und Tutorials, die mir schon oft geholfen haben. Mein Problem mit xml ist, dass ich eine bestehende Datei in einigen Spalten in Excel ergänzen möchte, mir Excel aber beim Import der xml und beim Export als xml die führenden Nullen verschluckt. Vor dem Imoprt ein jungfräuliches Blatt komplett als Text formatieren hat das Problem nicht gelöst. Alle Spalten einzeln mit Sonderformat formatieren (unterschiedliche Zeichenanzahl enthaltend), hat auch nicht geholfen. In notepad++ fehlen die Nullen nach dem Export wieder. Zahlenformatierung beibehalten ist unter Eigenschaften der xml-Zuordnung angehakt. Ich vermute, schon beim Import einen Fehler zu machen, denn die Daten stehen in der 5. Ebene und haben alle die Überschrift value(1 bis n).
    Vielen Dank im Voraus für die Hilfe und Gruß
    Simone

    • Avatar-Foto
      Martin Weiß

      Hallo Simone,

      ich habe auch immer wieder festgestellt, dass der XML-Import sehr zickig sein kann und man nur wenig bis gar keinen Einfluss auf das Ergebnis hat. Für dein Problem habe ich leider auch keine Lösung…

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Jürgen

    Hallo Martin,

    bin bei der Suche nach dem Grund einer Fehlermeldung beim automatischen Export und erzeugen eines xml-Files auf Deine Seite hier gestoßen. Ich will den XML-Export per Makro anstoßen und habe dazu die Schritte die ich sonst manuell mache, also dass ich in der Entwicklungsumgebung auf „Exportieren“ klicke und dann den Dateinamen und den Pfad des xml-Files eingebe, per Makro aufgezeichnet. In dem Makro stehen dann komischerweise nur diese zwei Zeilen

    ActiveWorkbook.XmlMaps(„Mod_Zuordnung“).Export Url:= _
    „J:\Temp\Ra\Neuer Ordner\test.xml“

    und wenn ich es dann per Button ausführen will, dann kommt die Fehlermeldung „Die Methode ‚Export‘ für das Objekt ‚XmlMap‘ ist fehlgeschlagen.
    Eigentlich würde ich gerne einen bestimmten Dateinamen aus einer Zelle im Excel verwenden und der Pfad soll eigentlich auch der sein unter dem bereits das Excel-file gespeichert wurde, aber ich scheitere ja schon am ausführen des Makros. Wieso funktioniert es nur manuell ? Weißt Du da einen Grund ?
    viele Grüße
    Jürgen

    • Avatar-Foto
      Martin Weiß

      Hallo Jürgen,

      tut mir leid, XML und VBA habe ich in der Kombination selbst auch noch nie verwendet.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Anna

    Hallo Martin
    Danke für deine Beiträge!
    Ich habe folgende Frage: bei einem Mac git es das Steuerelement „Quellen“ in den Entwicklertools nicht. Gibt es da einen alternativen Weg?

    Vielen Dank für deine Hilfe

    • Avatar-Foto
      Martin Weiß

      Hallo Anna,

      was den Mac angeht, kann ich leider überhaupt nicht weiterhelfen, da ich keinen Mac besitze. Vielleicht weiß hier ein anderer Leser etwas dazu?

      Schöne Grüße,
      Martin

  • Avatar-Foto
    R Hasani

    Hallo Martin,

    Ich habe eine Frage ich möchte pro Zeile in deinem Beispiel pro Person eine XML nicht eine XML für alle Einträge ist das möglich? wen ja wie?

    Vielen Dank für deine Antwort.

    • Avatar-Foto
      Martin Weiß

      Hallo R,

      das ist leider nicht möglich. Alles, was innerhalb einer Tabelle enthalten ist, wird in eine einzige XML-Datei gespeichert.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Simon Rink

    Hallo Martin,

    ist es möglich in dem Schema das Ausgabeformat anzupassen? Aus dem Datum in Excel gibt er mir in der XML Datei eine Zahlenfolge, statt dem Datum aus.

    Vielen Dank, dein Beitrag ist sehr hilfreich.

    • Avatar-Foto
      Simon Rink

      Das Datumsproblem habe ich selbst beheben können, allerdings hängt es noch bei dem erzwingen von 2 Dezimalzahlen nach dem Komma.

      • Avatar-Foto
        Martin Weiß

        Hallo Simon,

        ich denke, das muss in der Schema-Datei definiert werden. Allerdings bin ich da auch nicht der Spezialist dafür und kann dir daher keinen konkreten Tipp geben.

        Schöne Grüße,
        Martin

      • Avatar-Foto
        Peter Soger

        Hallo Simon
        Könntest du bitte deine Lösung mit dem Datumsproblem hier veröffentlichen. Dann können andere davon profitieren. Ich habe nämlich die gleiche Frage.

        Vielen Dank dafür.

        Peter

  • Avatar-Foto
    Uwe

    Hallo Martin,

    Kompliment für Deine schöne Anleitung. Die hat mir prima geholfen.

    Ich hänge nur noch an einem Punkt und glaube ich mache einen Anfängerfehler.
    Vielleicht hast Du ja einen einfachen Tipp für mich oder kannst mich sagen, wo ich nach meinem Fehler suchen muss.

    Ich habe das Exel-File erstellt, die xsd zugeordnet und den Spalten die Felder aus der Quelle (korrekt?) zugeordnet.
    Bis dahin alles prima.
    Leider wird aber nur die Zeile mit den Überschriften nach xml exportiert, nicht aber die Wertezeilen. Die erhalten wohl nicht das korrekte Format. Hast Du ’nen Tipp für mich, was ich falsch mache? Habe die Beiträge hier gelesen, aber so direkt hat mir keiner weitergeholfen.

    Beste Grüße!

    Uwe

    • Avatar-Foto
      Martin Weiß

      Hallo Uwe,

      wenn du wie oben im Artikel beschrieben die XML-Zuordnung auf deine Tabelle ziehst, dann müssten auch alle Wertezeilen in eine formatierte Tabelle umgewandelt werden. Wenn das der Fall ist, sollte es auch keine Probleme mit dem Export geben.
      Falls nicht alle Wertezeilen in der formatierten Tabelle enthalten sind: Gibt es vielleicht zwischen der Überschriftenzeile und den Wertezeilen noch eine leere Zeile? Die müsste dann entfernt werden.

      Eine andere Ursache fällt mir spontan nicht ein.

      Schöne Grüße,
      Martin

      • Avatar-Foto
        Uwe

        Hallo Martin,

        es liegt an der Art und Weise, wie ich die Verknüpfung herstellen will.
        In meinem neuesten Excel muss ich da einige Konventionen beachten, dann wird’s auch.
        Ich bin jetzt einen Schritt weiter und denke, nun werde ich es hinkriegen.

        Vielen Dank für den Input!

        Uwe

  • Avatar-Foto
    Matthias

    Moin,
    klasse erklärt.
    Hat bei mir alles funktioniert und ich konnte es Problemlos zu meinem Anliegen transferieren.

  • Avatar-Foto
    Steppo

    Hallo und Danke für Deinen hilfreichen Beitrag! Der hat mir Super geholfen, mehr die Thematik besser zu verstehen.

    Das gezeigte Beispiel konnte ich problemlos nachvollziehen. Jetzt stehe ich vor der Aufgabe eine komplexe XML Struktur zu exportieren.
    Ich konnte aus einer gelieferten XML eine XSD generieren und erfolgreich verbinden. Nur wird dabei die Struktur nicht in eine formatierte Tabelle umgewandelt und somit immer nur die erste Zeile exportiert.

    Wo könnte hier denn das Problem liegen?

  • Avatar-Foto
    Holger

    Hallo,
    wirklich sehr guter Beitrag und für mich als Beginner genau richtig.
    Eine Frage für mein bevorstehendes Projekt: wie könnte ich möglichst einfach, je ein xml-file je Excel bzw Tabellen Zeile (name, Adresse…) erzeugen?

    • Avatar-Foto
      Martin Weiß

      Hallo Holger,

      wie oben im Artikel beschrieben musst du über einen Texteditor eine Schema-Datei erzeugen. Das ist zwar umständlich, aber eine bessere Lösung habe ich leider auch nicht.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Heike Böwing

    Hallo Martin,
    erst einmal vielen Dank für diese super Anleitung. Ich komme auch bis zum letzten Schritt und bekomme dann bei Exportieren die Fehlermeldung:
    Die XML-Daten können nicht exportiert oder gespeichert werden. die XML-Zuordnungen in diesem Arbeitsblatt sind nicht exportierbar.
    Kannst du mir hier vielleicht auch helfen?
    Besten Dank, Heike

  • Avatar-Foto
    Sascha Krüning

    Betreff Hierarchische Daten

    Hallo Martin,
    danke für die tollen Anweisungen. Hat alles funktioniert wie beschrieben. Ich will jedoch auch hierarchische Daten als XML speichern,
    Jede Person kann 1, 2..n Telefonnummern haben. Dazu habe ich die Tabelle ergänzt um die Spalten Telefontyp (z.B. Festnetz, Mobil) und die Nummer selber.
    Eine Person mit n Telefonnummern belegt auch n Zeilen in der Tabelle. Die XML sollte so in der Art aussehen

    Habe eine XSD erstellt und bereitgestellt. Allerdings geht der Export nicht:
    Die XML-Daten können nicht exportiert oder gespeichert werden. Die XML-Zuordnungen in diesem Arbeitsblatt sind nicht exportierbar.

    Vielleicht geht es auch nicht, weil Excel ja nicht mitgeteilt bekommt Aufgrund welcher Kriterien die Daten gruppiert werden sollen.

    Oder geht es doch und ich bin nur nicht in der Lage.

    Vielen Dank
    Sascha

    • Avatar-Foto
      Sascha Krüning

      Die in der Frage angegebene XML Struktur wurde nicht übernommen.
      Jetzt nochmal ohne Spitzklammern

      Adressen
      Adresszeile
      Name
      Strasse
      Telnummern
      Telefon
      Typ
      Nummer
      /Telefon
      Telefon
      Typ
      Nummer
      /Telefon
      /Telnummern
      Adresszeile
      /Adressen

      • Avatar-Foto
        Martin Weiß

        Hallo Sascha,

        das Problem hatten schon andere Leser oben in den Kommentaren beschrieben, daher kann ich mich hier nur wiederholen: Excel kann meines Wissens nur flache XML-Strukturen exportieren. Sobald man hierarchische Strukturen hat, klappt es einfach nicht mehr.

        Schöne Grüße,
        Martin

  • Avatar-Foto
    Samuel Vargian

    Super Erklärt Danke für alles und hat super geklappt auch.
    Eine Frage noch, ich mache mir einen Adressen Buch mit PHP und dazu brauch ich diese Tabelle in XML, die Frage ist ob ich dich noch fragen könnte wenn ich Probleme habe in PHP das wäre natürlich super.
    beste grüße auch noch und das ganze Team.

    • Avatar-Foto
      Martin Weiß

      Hallo Samuel,

      freut mich, dass der Artikel weitergeholfen hat. Individuelle Unterstützung kann ich jedoch nicht bieten, das ganze Team besteht nur aus mir 😉

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Tobias

    Hallo Martin,

    zunächst auch von mir vielen Dank für die super Erklärungen. Das hat mir als Einsteiger sehr weitergeholfen.
    Allerdings benötige ich noch eine Erweiterung in der exportierten XML-Datei aus Excel und hoffe, dass du mir dabei helfen kannst.
    In der Schema-Datei wird ja zu Beginn u.a. die Version definiert. Ist es möglich, noch weitere Deklarationen zu ergänzen, die dann auch in der exportierten XML-Datei vorhanden sind? Konkret geht es darum, dass im Output der Pfad zu einer xsl-Datei angegeben werden muss. Das wäre dann die folgende Code-Zeile:

    Diese wird leider nicht übernommen, obwohl es in der Schema-Datei enthalten ist.
    Hast du eine Idee, wie die erwähnte Code-Zeile auch in der aus Excel exportieren XML-Datei enthalten sein kann?

    Besten Dank und viele Grüße
    Tobias

    • Avatar-Foto
      Tobias

      Leider ist die Code-Zeile nicht mitgekommen:

      xml-stylesheet href=“TABLE_XML.xsl“ type=“text/xsl“

      mit an Anfang bzw. Ende

      • Avatar-Foto
        Martin Weiß

        Hallo Tobias,

        das kann ich dir leider auch nicht beantworten, ich bin kein XML-Spezialist und weiß nicht, welche Elemente und XML-Strukturen hier erlaubt sind. Da hilft wohl nur ausprobieren.

        Schöne Grüße,
        Martin

  • Avatar-Foto
    Kärtner

    Hallo Martin,
    deine Beschreibung hat mit meinem Office 2016 funktioniert. Vielen Dank dafür. Das ist eine tolle Sache!
    Eine Frage zum XML-Export: Ich habe ein Feld mit EUR-Betrag in meine Schemadatei aufgenommen. Obwohl die Daten in Excel als Zahlen im Format „0,00“ vorliegen und angezeigt werden, werden im XML-Export die Zahlen im Format „0.00“ bereitgestellt. Hast du eine Idee, wie das gesteuert wird und ob ich das beeinflussen kann? Der Schalter „Zahlenformatierung beibehalten“ im XML-Optionsmenü hat leider nichts bewirkt.

    Vielen Dank!
    Gruß Winfried

    • Avatar-Foto
      Martin Weiß

      Hallo Winfried,

      meines Wissens werden in einem xs:element Deziamlzahlen grundsätzlich mit dem Punkt als Dezimaltrenner dargestellt. Ob sich das irgendwie ändern lässt, kann ich mangels tiefergehender XML-Kenntnisse leider auch nicht beantworten.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Frank

    Hallo Martin,
    ich habe mit dem Script versucht, eine Exel Telefonbuch-Tabelle ins *xml Format zu bringen.
    Es kommen aber Fehlermeldungen von Exel zu dem .xsd Skript.

    Ich könnte 2 Screenshots per email schicken.
    meine emailadresse s.u.
    Wo kann ich die Screenshots hinschicken?
    Grüße
    Frank

  • Avatar-Foto
    Michael Feick

    Hallo Martin,

    ist vielleicht schon mal gesagt/geschrieben worden, ich hatte es aber eben bei der Umsetzung Deiner Anleitung nicht beachtet:
    Im Spaltenkopf der Ausgangstabelle auf „ÄÖÜäöüß… u.a. „Sonderzeichen“ verzichten.
    Dann klappt es Super (wie immer).

    Vielen Dank! Mach weiter so!
    Beste Grüße
    Michael

  • Avatar-Foto
    Claudia Sigl

    Lieber Herr Weiß,
    herzlichen Dank für Ihre logischen und hilfreichen Darstellungen.
    Haben Sie vielleicht noch einen Tipp für mich, wie muss ich Geburtsdaten im einem Schema anlegen, für eine XML Datei mit Geburtsdaten. Derzeit wird mir das Geburtsdatum im Browser nur als Nummer dagegenstellt.
    Besten Dank im Voraus.

  • Avatar-Foto
    Marijan

    Hallo Martin
    Danke für das Tutorial. Ich habe es durchgeführt und es hat funktioniert 🙂

    Ich möchte folgendes durchführen:
    – Anhand des obigen Tutorials habe ich eine schema.xsd Datei erstellt
    – aus meiner Applikation erstelle ich eine XML Daten Datei, die zur schema.xsd Datei passt
    – und jetzt starte ich Excel aus meiner Applikation und übergebe die schema.xsd und die XML Datei
    – Excel startet und zeigt mir die Daten aus der XML Datei an

    Wichtig:
    – Ich arbeite nur mit meiner Applikation und möchte nicht bei jedem Excel die XML Datei manuell importieren
    – Das schema bleibt gleich, nur die Daten ändern sich laufend

    Hast du eine Idee wie so ein Kommando auf der Kommandozeile aussehen kann?

    Danke für dein Feedback.
    Gruss, Marijan

    • Avatar-Foto
      Martin Weiß

      Hallo Marijan,

      ich fürchte, so etwas ist mit einer Kommandozeile nicht zu bewerkstelligen. Meine erste Idee wäre gewesen, die XML-Zuordnung in eine leere Arbeitsmappe zu laden und diese Arbeitsmappe dann als Arbeitsmappenvorlage mit dem Namen Mappe.xltx in das XLSTART-Verzeichnis zu legen. Damit wäre die XML-Zuordnung zumindest bei jeder neu erstellten Arbeitsmappe enthalten. Aber die XML-Datei aus der Applikation bekommt man damit trotzdem nicht automatisch importiert…

      Tut mir leid, da habe ich auch keine Idee.

      Schöne Grüße,
      Martin

      Schöne Grüße,
      Martin

    • Avatar-Foto
      Karl Hegetschweiler

      Hallo Marijan
      Auch ich befasse mich seit längerem mit xml- | xml- Formate/Transformationen.
      Zu Deinem Anliegen, xml/excel mit *xsd, habe ich vorerst in Google folgenden Suchbefel einegegeben:
      import xml data with xsd
      Nach dem ich die Trefferliste durchgeschaut habe, bin ich mir fast sicher dass Du damit weiterkommst.
      Dies vorerst mein erster Gedanke. Werde selbst noch Testläufe machen, evtl. auch mit Power-Query?????
      !!! …. Nicht vergessen, Der Verweis auf eine existierende *.xsd, kann in den Kopfdaten der *.xml-Datei eingefügt
      werden…….!!!

      Viele Grüsse karl_heg

      • Avatar-Foto
        Karl Hegetschweiler

        import xml data with xsd
        export xsd from excel
        Hallo zusammen
        Ja, wie Martin Weiß in der Eröffnung schon erwähnt hat, wird die *.xsd nicht mehr zurückgeliefert.
        Schade, dass sich MS nicht leisten kann, sich an globalen Konformitäten anzupassen.
        Nun, ich habe meine Testläufe gemacht. (Stylus Studio 2006 xml Enterprise und Excel Office 365)
        Mit Excel „Entwicklertools / Quelle / Import / Export“, kann man immerhin einfache tabellarische Datenstrukturen *.xml
        komfortabel editieren/modellieren. (importieren nach *.xsd-Schema, editieren / exportieren in Ursprungs- Datei *.xml).
        Um Daten zu modellideren genügen oft 10 bis 50 Datensätze, um die entstehende Struktur herauszufinden.
        Bsp: Strassen Nummer in Adresssdaten! Wer denkt bei der Modellierung schon daran, dass es die Nr. 11b auch gibt.
        Soweit meine Testläufe. Es ist auch unverständlich, dass sich MS nicht leisten kann, führende Nullen mitzuliefern.
        So bleibt nur eine rudimentäre Lösung in der Modellierung < 50 Datensätze, führende Nullen zu erzwingen indem man
        007B schreibt und als Text formatiert.

        mfg, karl_heg

    • Avatar-Foto
      Martin Weiß

      Hallo Alexander,

      freut mich zu hören, dass du hier fündig geworden bist. Und danke für den Tipp mit dem XSD-Generator.

      Schöne Grüße,
      Martin

  • Avatar-Foto
    Christine

    Hallo Martin,
    ich habe dein Beispiel mit den downgeloadeten Dateien ausprobiert, „es tut“ (-:
    Eins ist mir aber nicht klar: Ich war der Meinung, dass „.xsd“ die Dateinamenserweiterung der Schema-Datei ist; beim Download kam die Datei allerdings als „schema.xsd.xml“ an. Ist das so korrekt?

    • Avatar-Foto
      Martin Weiß

      Hallo Christine,

      du meinst die von mir bereitgestellte Schema-Datei? Die heißt bei mir auch schema.xsd
      Warum die bei dir beim Download als schema.xsd.xml gespeichert wird, kann ich mir auch nicht erklären. Im Zweifelsfall kannst du die Datei ja anschließend umbenennen.

      Schöne Grüße,
      Martin