Как конвертировать XML в XLSX с помощью Python?

Цель данной статьи — предоставить пошаговое руководство по конвертации XML данных в формат XLSX с помощью Python. Мы рассмотрим использование библиотек xml.etree.ElementTree для парсинга XML и openpyxl для работы с Excel файлами.

Что такое XML и XLSX

XML (Extensible Markup Language) — это формат данных, который широко используется для обмена структурированной информацией между различными системами. Он представляет собой текстовый файл, где данные организованы в виде элементов с атрибутами.

XLSX — это формат файлов Microsoft Excel, который используется для хранения табличных данных. Он более удобен для просмотра и анализа данных благодаря возможности использования различных функций и формул Excel.

Причины конвертации между XML и XLSX

Конвертация данных из XML в формат XLSX может потребоваться по разным причинам:

  • Удобство анализа данных в Excel.
  • Требования бизнес-процесса.
  • Совместимость с различными инструментами и ПО.

Обзор используемых библиотек

Мы будем использовать следующие библиотеки:

  • xml.etree.ElementTree — стандартная библиотека Python для работы с XML файлами.
  • openpyxl — популярная библиотека для работы с XLSX файлами.

Знакомство с данными

Структура данных в XML

XML данные организованы в виде элементов и атрибутов. Элемент представляет собой тег с началом и концом, где содержатся данные или другие элементы.

Пример XML файла

<employees>
  <employee id="1">
    <name>John Doe</name>
    <age>30</age>
    <position>Developer</position>
  </employee>
  <employee id="2">
    <name>Jane Smith</name>
    <age>25</age>
    <position>Designer</position>
  </employee>
</employees>

Этот XML файл содержит информацию о сотрудниках, таких как ID, имя, возраст и должность.

Установка необходимых библиотек

Установка библиотек через pip

Для работы с XLSX файлами нам понадобится установить библиотеку openpyxl. Сделать это можно с помощью следующей команды:

pip install openpyxl

Чтение данных из XML

Использование xml.etree.ElementTree для парсинга XML

xml.etree.ElementTree позволяет удобно парсить XML данные и извлекать из них необходимую информацию.

Извлечение данных о сотрудниках

Мы будем читать XML файл, извлекать данные о сотрудниках и структурировать их в виде списка словарей.

import xml.etree.ElementTree as ET

# Парсинг XML файла
tree = ET.parse('employees.xml')
root = tree.getroot()

# Извлечение данных о сотрудниках
employees = []
for emp in root.findall('employee'):
    id_ = emp.get('id')
    name = emp.find('name').text
    age = emp.find('age').text
    position = emp.find('position').text
    employees.append({'id': id_, 'name': name, 'age': age, 'position': position})

# Вывод списка сотрудников
print(employees)

Запись данных в XLSX

Использование openpyxl для создания XLSX файлов

openpyxl позволяет нам создать новый Excel файл и записать в него данные.

Создание новой книги Excel и заполнение данными

Создаем новый файл Excel и заполняем его данными о сотрудниках.

from openpyxl import Workbook

# Создание новой книги Excel
wb = Workbook()
sheet = wb.active
sheet.title = 'Employees'

# Добавление заголовков
sheet.append(['ID', 'Name', 'Age', 'Position'])

# Заполнение данными
for emp in employees:
    sheet.append([emp['id'], emp['name'], emp['age'], emp['position']])

# Сохранение файла
wb.save('employees.xlsx')

Полный пример кода

Объединение всех частей кода в одну программу

Ниже представлен полный пример кода для конвертации XML в XLSX.

import xml.etree.ElementTree as ET
from openpyxl import Workbook


def convert_xml_to_xlsx(xml_file: str, xlsx_file: str) -> None:
    """
    Функция для конвертации XML файла в XLSX.

    :param xml_file: Путь к XML файлу
    :param xlsx_file: Путь для сохранения XLSX файла
    """
    # Парсинг XML файла
    tree = ET.parse(xml_file)
    root = tree.getroot()
    employees = []

    # Извлечение данных о сотрудниках
    for emp in root.findall("employee"):
        id_ = emp.get("id")
        name = emp.find("name").text
        age = emp.find("age").text
        position = emp.find("position").text
        employees.append({"id": id_, "name": name, "age": age, "position": position})

    # Создание новой книги Excel и заполнение данными
    wb = Workbook()
    sheet = wb.active
    sheet.title = "Employees"
    sheet.append(["ID", "Name", "Age", "Position"])
    for emp in employees:
        sheet.append([emp["id"], emp["name"], emp["age"], emp["position"]])

    # Сохранение файла
    wb.save(xlsx_file)


# Использование функции
convert_xml_to_xlsx("employees.xml", "employees.xlsx")

Заключение

Основные выводы и шаги

Мы рассмотрели процесс конвертации данных из формата XML в XLSX с помощью Python. В процессе мы использовали библиотеки xml.etree.ElementTree для парсинга XML и openpyxl для работы с XLSX файлами. Следуя пошаговому руководству, мы успешно создали Excel файл с данными о сотрудниках.

Возможные улучшения и расширения

Для дальнейшего улучшения вашей программы вы можете:

  • Добавить обработку более сложных структур XML.
  • Реализовать обработку ошибок для повышения устойчивости к неверным данным.
  • Добавить поддержку стилей и форматирования в создаваемый Excel файл.

Добавить комментарий