Преобразование Excel в XML на Python: Руководство для начинающих

Если вы новичок в Python и вам нужно преобразовать данные Excel в XML (для систем, API или инструментов, которые этого требуют), это руководство для вас. Мы рассмотрим два простых, подходящих для начинающих метода: Автоматическое преобразование (быстро, без лишней работы) и Пользовательское преобразование (полный контроль над структурой XML). Никаких предварительных знаний XML или продвинутого Python не требуется — просто копируйте код и следуйте инструкциям.

1. Зачем преобразовывать Excel в XML?

Excel отлично подходит для редактирования человеком, но XML является универсальным форматом для обмена данными между системами. Основные причины для преобразования:

  • Кроссплатформенная совместимость : XML работает с любым программным обеспечением/API, без проблем с форматированием Excel.

  • Структурированные данные : XML поддерживает иерархические связи (например, вложенные узлы), которые Excel не может четко представить.

  • Интеграция систем : Многие корпоративные инструменты и веб-сервисы требуют XML для импорта/экспорта данных.

  • Целостность данных : Теги XML (например, <name>Иван</name>) устраняют неоднозначность в значении данных.

2. Предварительные требования

Мы будем использовать две библиотеки Python — не волнуйтесь, их установка проста:

  1. pandas: Библиотека, удобная для начинающих, для чтения файлов Excel (она превращает данные Excel в удобный для работы «DataFrame»).

  2. openpyxl + xlrd: Помогают pandas читать файлы .xlsx (современный Excel) и .xls (старый Excel).

Установите их одной командой в вашем терминале/командной строке:

pip install pandas openpyxl xlrd

Всё! Вы готовы начать преобразование.

3. Метод 1: Автоматическое преобразование (без лишних хлопот, полный экспорт данных)

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

3.1 Пример данных Excel

Давайте используем простой файл Excel (с именем data.xlsx) с информацией о клиентах. Вот как он выглядит (строки = клиенты, столбцы = детали):

3.2 Код автоматического преобразования

Этот код читает ваш файл Excel, преобразует все данные в XML и сохраняет как output_auto.xml. Я добавил подробные комментарии к каждой строке, чтобы вы точно понимали, что происходит:

import pandas as pd

import xml.etree.ElementTree as ET

def excel_to_xml_auto(excel_path, xml_save_path, sheet_name=0):

# 1. Читаем файл Excel (pandas автоматически определяет заголовки)

# fillna("") заменяет пустые ячейки на пустые строки (избегаем "NaN" в XML)

df = pd.read_excel(excel_path, sheet_name=sheet_name).fillna("")

# 2. Создаем корневой узел XML (верхнеуровневый тег)

root = ET.Element("customers") # Назовите это так, как имеет смысл для ваших данных

# 3. Проходим по каждой строке в файле Excel

for _, row in df.iterrows():

# Создаем узел "customer" для каждой строки (один на строку Excel)

customer = ET.SubElement(root, "customer")

# 4. Проходим по каждому столбцу в строке (один на столбец Excel)

for col_name in df.columns:

# Создаем тег для каждого столбца (используем заголовок Excel как имя тега)

# Заменяем пробелы в именах столбцов на подчеркивания (в XML-тегах не может быть пробелов)

field = ET.SubElement(customer, col_name.replace(" ", "_"))

# Добавляем значение ячейки в XML-тег

field.text = str(row[col_name])

# 5. Сохраняем XML-файл (с форматированием для удобочитаемости)

tree = ET.ElementTree(root)

with open(xml_save_path, "wb") as f:

tree.write(f, encoding="utf-8", xml_declaration=True, method="xml")

print(f"✅ Автоматическое преобразование выполнено! XML сохранен в: {xml_save_path}")

# ------------------- ИСПОЛЬЗОВАНИЕ ФУНКЦИИ -------------------

if __name__ == "__main__":

excel_to_xml_auto(

excel_path="data.xlsx", # Путь к ВАШЕМУ файлу Excel

xml_save_path="output_auto.xml", # Куда сохранить XML

sheet_name=0 # 0 для первого листа (или "Sheet1" по имени)

)

Когда вы запустите код, он создаст output_auto.xml со следующей структурой. Обратите внимание, как каждый столбец Excel становится тегом, а каждая строка — узлом <customer>:

3.3 Когда использовать автоматическое преобразование

Автоматическое преобразование идеально, если:

  • Вам нужен быстрый способ экспортировать все данные Excel в XML.

  • Вам не важна настройка структуры XML (например, имена тегов, вложенные узлы).

  • Вы тестируете или нуждаетесь во временном XML-файле.

4. Метод 2: Пользовательское преобразование (полный контроль над структурой XML)

Автоматическое преобразование отлично подходит для скорости, но иногда XML должен соответствовать определенной структуре (например, для API, требования клиента или интеграции с корпоративной системой). Здесь на помощь приходит пользовательское преобразование — оно позволяет:

  • Экспортировать только нужные столбцы (игнорировать ненужные данные).

  • Переименовывать теги (например, использовать <full_name> вместо name из Excel).

  • Добавлять вложенные узлы (например, поместить name и email внутрь узла <contact_info>).

  • Добавлять атрибуты (например, <customer id="1">).

4.1 Те же данные Excel (используем тот же пример)

Мы будем использовать тот же файл data.xlsx, что и раньше — ничего менять не нужно.

4.2 Код пользовательского преобразования

Допустим, нам нужно, чтобы XML:

  • Включал только name, age и email (игнорировал city).

  • Переименовал name в full_name, а email в contact_email.

  • Добавлял атрибут id каждому <customer> (например, <customer id="1">).

  • Вкладывал full_name и contact_email внутрь узла <contact_details>.

Вот код, который это делает — снова с подробными комментариями:

import pandas as pd

import xml.etree.ElementTree as ET

def excel_to_xml_custom(excel_path, xml_save_path, sheet_name=0):

# 1. Читаем файл Excel (так же, как в автоматическом преобразовании)

df = pd.read_excel(excel_path, sheet_name=sheet_name).fillna("")

# 2. Создаем корневой узел (пользовательское имя: "customer_list")

root = ET.Element("customer_list")

# 3. Проходим по строкам (добавляем индекс для атрибута "id")

for index, row in df.iterrows():

# Создаем узел "customer" с атрибутом id (index + 1, чтобы начинать с 1, а не с 0)

customer = ET.SubElement(root, "customer", id=str(index + 1))

# 4. Добавляем вложенный узел: <contact_details>

contact_details = ET.SubElement(customer, "contact_details")

# 5. Добавляем пользовательские теги (только нужные столбцы, с пользовательскими именами)

ET.SubElement(contact_details, "full_name").text = str(row["name"])

ET.SubElement(contact_details, "contact_email").text = str(row["email"])

# 6. Добавляем age как прямой дочерний элемент "customer" (не вложенный)

ET.SubElement(customer, "age").text = str(row["age"])

# 7. Сохраняем XML-файл (так же, как в автоматическом преобразовании)

tree = ET.ElementTree(root)

with open(xml_save_path, "wb") as f:

tree.write(f, encoding="utf-8", xml_declaration=True, method="xml")

print(f"✅ Пользовательское преобразование выполнено! XML сохранен в: {xml_save_path}")

# ------------------- ИСПОЛЬЗОВАНИЕ ФУНКЦИИ -------------------

if __name__ == "__main__":

excel_to_xml_custom(

excel_path="data.xlsx",

xml_save_path="output_custom.xml"

)

Запустите код, и вы получите output_custom.xml с точно той структурой, которую мы хотели — обратите внимание на вложенные узлы, пользовательские теги и атрибут id:

4.3 Когда использовать пользовательское преобразование

Пользовательское преобразование необходимо, если:

  • Вам нужно, чтобы XML соответствовал определенному формату (например, для API или клиента).

  • Вы хотите исключить ненужные столбцы.

  • Вам нужны вложенные узлы или атрибуты.

  • Вы используете XML в рабочей среде (не только для тестирования).

5. Важные замечания для начинающих (избегайте распространенных ошибок!)

Как новичок, обратите внимание на несколько подводных камней — это сэкономит вам время и нервы:

  • Обработка пустых ячеек

В файлах Excel часто встречаются пустые ячейки, которые pandas читает как NaN (Not a Number). Если не обработать это, в XML появятся значения NaN, что недопустимо в большинстве систем. Поэтому мы используем .fillna(""), чтобы заменить пустые ячейки на пустые строки.

  • В тегах XML не может быть пробелов

Заголовки столбцов Excel часто содержат пробелы (например, «Full Name»), но в XML-тегах пробелы не допускаются. В коде автоматического преобразования мы используем col_name.replace(" ", "_"), чтобы исправить это (например, «Full Name» становится Full_Name).

  • Преобразование всех значений в строки

В Excel есть разные типы данных (числа, даты, текст), но XML хранит только текст. Использование str(row[col_name]) преобразует все значения в строки, обеспечивая совместимость.

  • Используйте правильный лист Excel

Если в вашем файле Excel несколько листов, используйте sheet_name="Sheet2" (замените на имя вашего листа) вместо sheet_name=0 (это первый лист).

  • Пути к файлам имеют значение

Если ваш файл Excel не находится в той же папке, что и скрипт Python, используйте полный путь (например, excel_path="C:/Users/YourName/Documents/data.xlsx" в Windows или "/Users/YourName/Documents/data.xlsx" в Mac/Linux).

6. Ключевые идеи для начинающих

Вот несколько дополнительных советов, которые помогут вам освоить преобразование Excel в XML:

  • Начните с простого : Сначала используйте метод автоматического преобразования, чтобы освоиться с процессом. Когда поймете, как Excel и XML соотносятся друг с другом, переходите к пользовательскому преобразованию.

  • Тестируйте на небольших данных : Не начинайте с огромного файла Excel — используйте небольшой образец (например, наш пример с 3 строками), чтобы протестировать код. Так будет легче исправлять ошибки.

  • Просматривайте вывод XML : Всегда открывайте сгенерированный XML-файл, чтобы проверить, правильно ли он выглядит. Можно использовать любой текстовый редактор (Блокнот, VS Code) или средство просмотра XML для лучшей читаемости.

  • Настраивайте дальше : Вы можете добавить более продвинутые функции в пользовательский код, например:

    • Добавить схему (XSD) для проверки XML.

    • Форматировать даты (например, преобразовывать даты Excel в формат ISO 8601).

    • Фильтровать строки (например, экспортировать только клиентов старше 30 лет).

7. Итоговое резюме

Преобразование Excel в XML на Python — полезный навык для любого начинающего, работающего с данными. Подведем итог:

  • Автоматическое преобразование : Быстро, просто, экспортирует все данные — идеально для тестирования или временных файлов.

  • Пользовательское преобразование : Полный контроль над структурой XML — необходимо для рабочей среды или интеграции систем.

Представленный код удобен для начинающих, готов к копированию и работает с большинством файлов Excel. Немного практики — и вы сможете настроить XML под любые требования.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества