Zum Inhalt springen

XML in Excel umwandeln

XML-Exporte, Feeds und Datendateien als formatierte Excel-Tabelle – die wiederkehrenden Datensätze werden für Sie erkannt, Attribute und verschachtelte Elemente als Spalten angelegt, und es wird nichts gespeichert.

  • Nie gespeichert
  • Keine Warteschlange, kein Warten
  • Ohne Anmeldung, ohne Wasserzeichen

So funktioniert’s

1

XML hinzufügen

Legen Sie eine .xml-Datei ab oder fügen Sie das XML ein. Dateien im Excel-eigenen Format „XML-Kalkulationstabelle 2003“ funktionieren ebenfalls.

2

Datensätze wählen

Das wiederkehrende Element – product, item, row – wird für Sie ausgewählt; alle weiteren Tabellen der Datei werden aufgelistet, mit Live-Vorschau.

3

Herunterladen

Eine .xlsx mit spaltenweise typisierten Zahlen und Datumswerten und einer fetten, filterbaren Kopfzeile.

Zeilen in einem Baum finden

XML kennt keine Tabellen, daher muss zuerst geklärt werden, welche Elemente die Datensätze sind. Das verlässliche Signal ist Wiederholung: Ein Elternelement mit vielen gleichnamigen Kindelementen steht fast immer für eine Liste von Datensätzen, und deren eigene Kindelemente und Attribute werden zu den Spalten. Das funktioniert bei der überwältigenden Mehrheit von Daten-XML – Exporte, Feeds, API-Antworten, Konfigurations-Dumps –, weil sie alle gleich aufgebaut sind.

Attribute und Kindelemente werden gleichermaßen zu Spalten. Das ist nötig, weil XML zwei Wege bietet, dasselbe auszudrücken, und verschiedene Systeme sich unterschiedlich entscheiden. Ein Export schreibt id="42" als Attribut, ein anderer <id>42</id> als Element, ein dritter macht beides im selben Dokument. Einem Raster ist dieser Unterschied egal, und Ihnen sollte er es auch sein – also kommen beide als Spalten an, wobei Attribute gekennzeichnet werden, damit ein Name, der in beiden Formen vorkommt, nicht kollidiert.

Verschachtelungen über mehr als eine Ebene werden abgeflacht, indem die Elementnamen verbunden werden – genauso wie bei verschachteltem JSON. Enthält ein Datensatz ein wiederholtes Kindelement – drei Positionen in einer Bestellung –, kann ein Raster das nicht als Zeilen darstellen, ohne alles drumherum zu duplizieren; die wiederholten Werte bleiben daher in ihrer Zelle. Namensräume werden aus den Spaltennamen entfernt, denn eine Spalte namens ns2:customerName hilft in einer Tabelle niemandem – die Werte selbst bleiben unangetastet.

Fließtext-XML enthält keine Tabelle und lässt sich schlecht umwandeln. Eine XHTML-Seite, ein DocBook-Artikel, ein EPUB-Kapitel oder eine SVG-Zeichnung ist ein Dokument und kein Datensatz: Die Struktur ist bewusst verschachtelt und unregelmäßig, und es gibt keinen wiederkehrenden Datensatz, aus dem sich Zeilen bilden ließen. Die Umwandlung liefert zwar etwas, aber dieses Etwas ist nicht brauchbar. Diese Seite ist für Daten-XML gedacht, und den Unterschied zu kennen spart mehr Zeit als jede Feinabstimmung.

Wenn Sie etwas anderes brauchen

Wenn Sie die Struktur kennen, extrahieren Sie sie gezielt, statt sie erraten zu lassen. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml holt mit einem XPath-Ausdruck genau die Felder heraus, die Sie brauchen, und xq macht dasselbe mit jq-artiger Syntax. Das ist der Unterschied zwischen einer Umwandlung, die zufällig funktioniert, und einer, die Sie in eine Pipeline einbauen können.

Für sehr große Dateien ist hier alles falsch zugeschnitten: Das Dokument wird vollständig in den Speicher geladen, und als Baum geparstes XML belegt typischerweise ein Mehrfaches der Dateigröße. Streaming-Parser – iterparse in Python oder SAX in jeder Sprache – durchlaufen ein Dokument von mehreren Gigabyte mit konstantem Speicherbedarf und sind ab einigen hundert Megabyte der einzige realistische Weg.

Häufig gestellte Fragen

Woher weiß das Tool, welcher Teil des XML die Tabelle ist?

Datensätze sind Elemente, die sich unter demselben Elternelement wiederholen – jedes <book> in einem <catalog>, jedes <item> in einem RSS-Channel. Jede Gruppe wird danach bewertet, wie viele Datensätze und Felder sie hat; die beste wird gewählt, und die anderen bleiben nur einen Klick entfernt.

Was passiert mit Attributen und verschachtelten Elementen?

Jedes wird zu einer Spalte, benannt nach seinem Pfad: Ein Attribut id wird zu id, <author><name> wird zu author/name, und <price currency="EUR"> ergibt price und price/@currency. Ein Feld, das sich innerhalb eines Datensatzes wiederholt, wird in einer Zelle zusammengeführt oder auf nummerierte Spalten verteilt.

Lassen sich Dateien im Format „XML-Kalkulationstabelle 2003“ von Excel öffnen?

Ja. Solche Dateien werden erkannt und Blatt für Blatt umgewandelt, mit unveränderten Zahlen, Datumswerten und Texten.

Was, wenn die Datei mehrere Tabellen enthält – Bestellungen und ihre Positionen?

Jede wiederkehrende Gruppe wird separat angeboten. Eine verschachtelte Tabelle, etwa die Positionen innerhalb jeder Bestellung, erhält eine Spalte, die ihren übergeordneten Datensatz kennzeichnet, sodass sich die beiden Tabellenblätter einander zuordnen lassen.

Wird meine Datei irgendwo gespeichert?

Nein. Das XML wird hier ausgewertet und die Arbeitsmappe hier geschrieben, und es wird nichts gespeichert.

Ist es sicher, XML aus unbekannter Quelle zu öffnen?

Ja. Die Datei wird vom XML-Parser Ihres Browsers gelesen, der nie externe Entitäten oder DTDs lädt und nichts ausführen kann, was in der Datei steht.

Gut zu wissen: Dokumente, die eher Fließtext als Daten sind – XHTML-Seiten, DocBook-Artikel –, enthalten keine Tabelle, die sich finden ließe, und lassen sich schlecht umwandeln. Dateien über etwa 100 MB können den Speicher Ihres Browsers übersteigen.

Dieses Tool auf Ihrer Website einbinden

Kostenlos für jeden Blog, jede Kursseite und jeden Hilfeartikel. Fügen Sie ein einziges Snippet ein, und Ihre Besucher können das Tool direkt auf Ihrer Seite nutzen.