Konvertierung zwischen Excel-Arbeitsblättern und XML mit Python
Tags: python, xml, excel, converter
Published: 2023-09-14 10:02:52

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](https://www.e-iceblue.com/Introduce/xls-for-python.html), das von der [offiziellen Website](https://www.e-iceblue.com/Download/Spire-XLS-Python.html) 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
```

## 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**
```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)
```
**Arbeitsbuch**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ftm0yjppmj70rpknjmg0.png)

**Ergebnisse der Umrechnung**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eo7ba1zdjeadm8d5q1r2.png)

## 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**
```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)
```

**Ergebnisse der Umrechnung**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/akeut964r6f3yomot3ch.png)

## 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**
```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>
```
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**
```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")
```

**Ergebnisse der Umrechnung**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmu2zhcudjee7s6xw7e5.png)

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](https://www.e-iceblue.com/Tutorials/Python/Spire.XLS-for-Python/Program-Guide/Spire.XLS-for-Python-Program-Guide-Content.html) mehr erfahren können. Wenn Sie Probleme haben, beteiligen Sie sich bitte an der Diskussion in den [Spire.XLS-Foren](https://www.e-iceblue.com/forum/spire-xls-f4.html).