DEV Community

SirOnly
SirOnly

Posted on

Konvertierung zwischen Excel-Arbeitsblättern und XML mit Python

XML (Extensible Markup Language) ist eine erweiterbare Auszeichnungssprache und auch ein Dateiformat. XML ermöglicht benutzerdefinierte Tags, ist erweiterbar, einfach lesbar und schreibbar und leicht zu übertragen. Es ist das am häufigsten verwendete Werkzeug für den Datenaustausch zwischen Anwendungen. Das XML-Format ist einfach zu übertragen und Entwickler können leicht mit Tabellen arbeiten. Für Endbenutzer muss es jedoch in Formaten wie xls oder xlsx angezeigt werden. In diesem Artikel wird erklärt, wie Excel-Arbeitsmappen und XML-Dateien ineinander konvertiert werden können.

Die in diesem Artikel vorgestellten Methoden erfordern Spire.XLS for Python, das von der offiziellen Website heruntergeladen oder mit pip installiert werden kann (Dispatch 1.7.4 muss ebenfalls installiert werden):

pip install Spire.XLS-for-Python
pip install plum-dispatch==1.7.4
Enter fullscreen mode Exit fullscreen mode

Excel-Arbeitsblätter in XML konvertieren

Die Methoden SaveAsXML(fileName: str) oder SaveToFile(fileName: str, FileFormat.XML) können verwendet werden, um Excel-Arbeitsmappen in XML-Dateien zu konvertieren. Bei der Konvertierung in XML werden nur Stilinformationen wie Schriftart und -größe beibehalten. Im Folgenden die detaillierten Schritte:

  1. Erstellen Sie ein Workbook-Objekt
  2. Laden Sie die Excel-Tabelle mit Workbook.LoadFromFile()
  3. Konvertieren und speichern Sie die Tabelle als XML-Datei mit Workbook.SaveAsXml() oder Workbook.SaveToFile()

Python

from spire.xls import *
from spire.common import *

# Erstellen Sie ein Objekt der Workbook-Klasse
workbook = Workbook()

# Laden Sie die Excel-Arbeitsmappe
workbook.LoadFromFile("Beispiele.xlsx")

# Konvertieren und speichern Sie in einer XML-Datei
workbook.SaveAsXml("output/Arbeitsmappe.xml")

# workbook.SaveToFile("output/Arbeitsmappe.xml", FileFormat.XML)
Enter fullscreen mode Exit fullscreen mode

Arbeitsbuch

Image description

Ergebnisse der Umrechnung

Image description

XML-Dateien im Excel-Standardformat in Arbeitsblätter konvertieren

XML-Dateien, die dem Excel-Standard entsprechen, können direkt in eine Arbeitsmappe konvertiert werden:

  1. Erstellen Sie ein Workbook-Objekt
  2. Laden Sie die XML-Datei mit Workbook.LoadFromXml()
  3. Konvertieren und speichern Sie die XML-Datei als Excel-Arbeitsmappe mit Workbook.SaveToFile()

Python

from spire.xls import *
from spire.common import *

# Erstellen Sie ein Objekt der Workbook-Klasse
workbook = Workbook()

# Laden Sie die XML-Datei
workbook.LoadFromXml("output/Arbeitsmappe.xml")

# Konvertieren Sie die XML-Datei in eine Excel-Arbeitsmappe und speichern Sie sie
workbook.SaveToFile("output/Konvertierung_von_XML_zu_Excel.xlsx", FileFormat.Version2016)
Enter fullscreen mode Exit fullscreen mode

Ergebnisse der Umrechnung

Image description

XML-Daten einlesen und in eine Excel-Arbeitsmappe speichern

Für nicht standardkonforme XML-Dateien können die Daten eingelesen und in eine Excel-Datei geschrieben werden:

Nachfolgend finden Sie eine Beispiel-XML-Datei, die zum Lesen der Daten verwendet wird:

XML

<students>
  <student>
    <Vorname>John</Vorname>
    <Alter>25</Alter>
    <Geschlecht>Männlich</Geschlecht>
    <Adresse>123 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7890</Telefonnummer>
  </student>
  <student>
    <Vorname>Jane</Vorname>
    <Alter>30</Alter>
    <Geschlecht>Weiblich</Geschlecht>
    <Adresse>456 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7891</Telefonnummer>
  </student>
  <student>
    <Vorname>Jack</Vorname>
    <Alter>35</Alter>
    <Geschlecht>Männlich</Geschlecht>
    <Adresse>789 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7892</Telefonnummer>
  </student>
  <student>
    <Vorname>Sarah</Vorname>
    <Alter>28</Alter>
    <Geschlecht>Weiblich</Geschlecht>
    <Adresse>321 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7893</Telefonnummer>
  </student>
  <student>
    <Vorname>David</Vorname>
    <Alter>40</Alter>
    <Geschlecht>Männlich</Geschlecht>
    <Adresse>654 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7894</Telefonnummer>
  </student>
  <student>
    <Vorname>Emily</Vorname>
    <Alter>22</Alter>
    <Geschlecht>Weiblich</Geschlecht>
    <Adresse>987 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7895</Telefonnummer>
  </student>
  <student>
    <Vorname>Michael</Vorname>
    <Alter>33</Alter>
    <Geschlecht>Männlich</Geschlecht>
    <Adresse>246 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7896</Telefonnummer>
  </student>
  <student>
    <Vorname>Rachel</Vorname>
    <Alter>27</Alter>
    <Geschlecht>Weiblich</Geschlecht>
    <Adresse>135 Main Street, irgendwo in Amerika</Adresse>
    <Telefonnummer>(123) 456-7897</Telefonnummer>
  </student>  
</students>
Enter fullscreen mode Exit fullscreen mode

Das genaue Verfahren ist wie folgt:

  1. Erstellen Sie ein Workbook-Objekt
  2. Laden Sie die XML-Daten
  3. Bestimmen Sie Spaltenzahl und Header aus dem ersten student-Knoten
  4. Legen Sie den Arbeitsblattnamen mit Worksheet.Name fest
  5. Schreiben Sie die Daten mit Worksheet.SetValue()
  6. Speichern Sie die Arbeitsmappe als neue Excel-Datei mit Workbook.SaveToFile()

Python

from spire.xls import *
from spire.common import *
import xml.etree.ElementTree as ET

# Erstellen Sie ein Objekt der Workbook-Klasse
workbook = Workbook()

# XML-Daten laden
xml_tree = ET.parse("Beispiel.xml")
xml_root = xml_tree.getroot()

# Holen Sie sich den ersten student-Knoten, um die Anzahl der Spalten und den Header festzulegen
first_student = xml_root.find("student")
header = list(first_student.iter())[1:]  # Erster Knoten wird übersprungen

# Arbeitsblatt hinzufügen und den Namen festlegen
worksheet_name = xml_root.tag
worksheet = workbook.Worksheets[0]
worksheet.Name = worksheet_name

# Header schreiben
for col_index, header_node in enumerate(header, start=1):
    header_text = header_node.tag
    worksheet.SetValue(1, col_index, header_text)

# Schülerdaten schreiben
row_index = 2
for student in xml_root.iter("student"):
    for col_index, data_node in enumerate(list(student.iter())[1:], start=1):  # Erster Knoten wird übersprungen
        value = data_node.text
        worksheet.SetValue(row_index, col_index, value)
    row_index += 1

# Arbeitsmappe als neue Excel-Datei speichern
workbook.SaveToFile("output/neue_arbeitsmappe.xlsx")
Enter fullscreen mode Exit fullscreen mode

Ergebnisse der Umrechnung

Image description

Dies ist eine Einführung in die Interkonvertierung zwischen XML- und Excel-Tabellen; Spire.XLS für Python hat viele weitere Funktionen, über die Sie im Spire.XLS für Python-Tutorial mehr erfahren können. Wenn Sie Probleme haben, beteiligen Sie sich bitte an der Diskussion in den Spire.XLS-Foren.

Top comments (0)