Категория

Создание файлов Excel в Python: от основ до автоматизации

2025-12-26 03:58:04 zaki zou

Create Excel file in Python using code

Создание файлов Excel в Python является частым требованием в приложениях, управляемых данными. Когда данные приложения необходимо предоставить в формате, который бизнес-пользователи могут легко просматривать и совместно использовать, Excel остается одним из самых практичных и широко распространенных вариантов.

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

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

Содержание


1. Типичные сценарии создания файлов Excel с помощью Python

Создание файлов Excel с помощью Python обычно происходит как часть более крупной системы, а не как отдельная задача. Общие сценарии включают:

  • Создание ежедневных, еженедельных или ежемесячных бизнес-отчетов
  • Экспорт результатов запросов к базе данных для анализа или аудита
  • Создание файлов Excel из серверных служб или пакетных заданий
  • Автоматизация обмена данными между внутренними системами или внешними партнерами

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


2. Настройка среды: подготовка к созданию файлов Excel в Python

В этом руководстве мы используем Free Spire.XLS for Python для демонстрации операций с файлами Excel. Перед созданием файлов Excel с помощью Python убедитесь, что среда разработки готова.

Версия Python

Любая современная версия Python 3.x достаточна для задач автоматизации Excel.

Free Spire.XLS for Python можно установить через pip:

pip install spire.xls.free

Вы также можете скачать Free Spire.XLS for Python и включить его в свой проект вручную.

Библиотека работает независимо от Microsoft Excel, что делает ее подходящей для серверных сред, запланированных заданий и автоматизированных рабочих процессов, где Excel не установлен.


3. Создание нового файла Excel с нуля в Python

Этот раздел посвящен созданию файла Excel с нуля с помощью Python. Цель состоит в том, чтобы определить базовую структуру книги, включая рабочие листы и строки заголовков, до записи каких-либо данных.

Создавая начальный макет программно, вы можете гарантировать, что все выходные файлы имеют одинаковую структуру и готовы к последующему заполнению данными.

Пример: создание пустого шаблона Excel

from spire.xls import Workbook, FileFormat

# Initialize a new workbook
workbook = Workbook()

# Access the default worksheet
sheet = workbook.Worksheets[0]
sheet.Name = "Template"

# Add a placeholder title
sheet.Range["B2"].Text = "Monthly Report Template"

# Save the Excel file
workbook.SaveToFile("template.xlsx", FileFormat.Version2016)
workbook.Dispose()

Предварительный просмотр файла шаблона:

Creating a Blank Excel Template Using Python

В этом примере:

  • Workbook() создает новую книгу Excel, которая уже содержит три рабочих листа по умолчанию.
  • Доступ к первому рабочему листу осуществляется через Worksheets[0] и он переименовывается для определения базовой структуры.
  • Свойство Range[].Text записывает текст в определенную ячейку, позволяя устанавливать заголовки или заполнители до добавления реальных данных.
  • Метод SaveToFile() сохраняет книгу в файл Excel. А FileFormat.Version2016 указывает версию или формат Excel для использования.

Создание файлов Excel с несколькими рабочими листами в Python

При создании Excel на основе Python одна книга может содержать несколько рабочих листов для логической организации связанных данных. Каждый рабочий лист может хранить разный набор данных, сводку или результат обработки в одном и том же файле.

В следующем примере показано, как создать файл Excel с несколькими рабочими листами и записать данные в каждый из них.

from spire.xls import Workbook, FileFormat

workbook = Workbook()

# Default worksheet
data_sheet = workbook.Worksheets[0]
data_sheet.Name = "Raw Data"

# Remove the second default worksheet
workbook.Worksheets.RemoveAt(1)

# Add a summary worksheet
summary_sheet = workbook.Worksheets.Add("Summary")

summary_sheet.Range["A1"].Text = "Summary Report"

workbook.SaveToFile("multi_sheet_report.xlsx", FileFormat.Version2016)
workbook.Dispose()

Этот шаблон обычно сочетается с рабочими процессами чтения/записи, где необработанные данные импортируются в один рабочий лист, а обработанные результаты записываются в другой.

Форматы файлов Excel в автоматизации Python

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

В дополнение к XLSX, Spire.XLS for Python поддерживает создание нескольких распространенных форматов Excel, в том числе:

  • XLSX – формат по умолчанию для современной автоматизации Excel
  • XLS – устаревший формат Excel для совместимости со старыми системами
  • CSV – текстовый формат, часто используемый для обмена и импорта данных

В этой статье все примеры используют формат XLSX, который рекомендуется для создания отчетов, экспорта структурированных данных и файлов Excel на основе шаблонов. Вы можете проверить перечисление FileFormat для получения полного списка поддерживаемых форматов.


4. Запись структурированных данных в файл XLSX с помощью Python

В реальных приложениях данные, записываемые в Excel, редко поступают из жестко закодированных списков. Чаще всего они генерируются из запросов к базе данных, ответов API или промежуточных результатов обработки.

Типичным шаблоном является рассмотрение Excel как окончательного формата доставки для уже структурированных данных.

Пример на Python: создание ежемесячного отчета о продажах из данных приложения

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

from spire.xls import Workbook

workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "Sales Report"

headers = ["Product", "Quantity", "Unit Price", "Total Amount"]
for col, header in enumerate(headers, start=1):
    sheet.Range[1, col].Text = header

# Data typically comes from a database or service layer
sales_data = [
    {"product": "Laptop", "qty": 15, "price": 1200},
    {"product": "Monitor", "qty": 30, "price": 250},
    {"product": "Keyboard", "qty": 50, "price": 40},
    {"product": "Mouse", "qty": 80, "price": 20},
    {"product": "Headset", "qty": 100, "price": 10}
]

row = 2
for item in sales_data:
    sheet.Range[row, 1].Text = item["product"]
    sheet.Range[row, 2].NumberValue = item["qty"]
    sheet.Range[row, 3].NumberValue = item["price"]
    sheet.Range[row, 4].NumberValue = item["qty"] * item["price"]
    row += 1

workbook.SaveToFile("monthly_sales_report.xlsx")
workbook.Dispose()

Предварительный просмотр ежемесячного отчета о продажах:

Generating a Monthly Sales Report from Application Data Using Python

В этом примере текстовые значения, такие как названия продуктов, записываются с помощью свойства CellRange.Text, а числовые поля используют CellRange.NumberValue. Это гарантирует, что количества и цены хранятся в Excel как числа, что позволяет выполнять правильные вычисления, сортировку и форматирование.

Этот подход естественным образом масштабируется по мере роста набора данных и отделяет бизнес-логику от логики вывода Excel. Для получения дополнительных примеров записи в Excel см. Как автоматизировать запись в Excel в Python.


5. Форматирование данных Excel для реальных отчетов в Python

В реальной отчетности файлы Excel часто доставляются непосредственно заинтересованным сторонам. Необработанные данные без форматирования могут быть трудны для чтения или интерпретации.

Общие задачи форматирования включают:

  • Визуальное выделение строк заголовков
  • Применение фоновых цветов или границ
  • Форматирование чисел и валют
  • Автоматическая настройка ширины столбцов

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

Пример на Python: улучшение читаемости отчета Excel

from spire.xls import Workbook, Color, LineStyleType

# Load the created Excel file
workbook = Workbook()
workbook.LoadFromFile("monthly_sales_report.xlsx")

# Get the first worksheet
sheet = workbook.Worksheets[0]

# Format header row
header_range = sheet.Range.Rows[0] # Get the first used row
header_range.Style.Font.IsBold = True
header_range.Style.Color = Color.get_LightBlue()

# Apply currency format
sheet.Range["C2:D6"].NumberFormat = "$#,##0.00"

# Format data rows
for i in range(1, sheet.Range.Rows.Count):
    if i % 2 == 0:
        row_range = sheet.Range[i, 1, i, sheet.Range.Columns.Count]
        row_range.Style.Color = Color.get_LightGreen()
    else:
        row_range = sheet.Range[i, 1, i, sheet.Range.Columns.Count]
        row_range.Style.Color = Color.get_LightYellow()

# Add borders to data rows
sheet.Range["A2:D6"].BorderAround(LineStyleType.Medium, Color.get_LightBlue())

# Auto-fit column widths
sheet.AllocatedRange.AutoFitColumns()

# Save the formatted Excel file
workbook.SaveToFile("monthly_sales_report_formatted.xlsx")
workbook.Dispose()

Предварительный просмотр отформатированного ежемесячного отчета о продажах:

Improving Excel Report Readability Using Python

Хотя форматирование не является строго обязательным для правильности данных, оно часто ожидается в бизнес-отчетах, которые передаются или архивируются. Ознакомьтесь с Как форматировать рабочие листы Excel с помощью Python для более продвинутых методов форматирования.


6. Чтение и обновление существующих файлов Excel в автоматизации Python

Обновление существующего файла Excel обычно включает в себя поиск правильной строки перед записью новых значений. Вместо обновления фиксированной ячейки сценарии автоматизации часто сканируют строки для поиска совпадающих записей и применяют обновления условно.

Пример на Python: обновление файла Excel

from spire.xls import Workbook

workbook = Workbook()
workbook.LoadFromFile("monthly_sales_report.xlsx")
sheet = workbook.Worksheets[0]

# Locate the target row by product name
for row in range(2, sheet.LastRow + 1):
    product_name = sheet.Range[row, 1].Text
    if product_name == "Laptop":
        sheet.Range[row, 5].Text = "Reviewed"
        break

sheet.Range["E1"].Text = "Status"

workbook.SaveToFile("monthly_sales_report_updated.xlsx")
workbook.Dispose()

Предварительный просмотр обновленного ежемесячного отчета о продажах:

Updating Excel Worksheet Using Python


7. Объединение операций чтения и записи в одном рабочем процессе

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

В этом разделе показано, как читать существующие данные Excel, нормализовать их и записывать обработанный результат в новый файл с помощью Python.

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

В результате необработанные данные Excel часто содержат такие проблемы, как:

  • Несколько строк для одной и той же бизнес-сущности
  • Несогласованные или нечисловые значения
  • Пустые или неполные записи
  • Структуры данных, которые не подходят для отчетности или анализа

Общим требованием является чтение необработанных данных Excel, применение правил нормализации в Python и запись очищенных результатов в новый рабочий лист, на который могут полагаться последующие пользователи.

Пример на Python: нормализация и агрегирование импортированных данных о продажах

В этом примере необработанный файл Excel с данными о продажах содержит несколько строк для каждого продукта.
Цель состоит в том, чтобы создать чистый сводный рабочий лист, где каждый продукт появляется только один раз, с программно рассчитанной общей суммой продаж.

from spire.xls import Workbook, Color

workbook = Workbook()
workbook.LoadFromFile("raw_sales_data.xlsx")

source = workbook.Worksheets[0]
summary = workbook.Worksheets.Add("Summary")

# Define headers for the normalized output
summary.Range["A1"].Text = "Product"
summary.Range["B1"].Text = "Total Sales"

product_totals = {}

# Read raw data and aggregate values by product
for row in range(2, source.LastRow + 1):
    product = source.Range[row, 1].Text
    value = source.Range[row, 4].Value

    # Skip incomplete or invalid rows
    if not product or value is None:
        continue

    try:
        amount = float(value)
    except ValueError:
        continue

    if product not in product_totals:
        product_totals[product] = 0

    product_totals[product] += amount

# Write aggregated results to the summary worksheet
target_row = 2
for product, total in product_totals.items():
    summary.Range[target_row, 1].Text = product
    summary.Range[target_row, 2].NumberValue = total
    target_row += 1
# Create a total row
summary.Range[summary.LastRow, 1].Text = "Total"
summary.Range[summary.LastRow, 2].Formula = "=SUM(B2:B" + str(summary.LastRow - 1) + ")"

# Format the summary worksheet
summary.Range.Style.Font.FontName = "Arial"
summary.Range[1, 1, 1, summary.LastColumn].Style.Font.Size = 12
summary.Range[1, 1, 1, summary.LastColumn].Style.Font.IsBold = True
for row in range(2, summary.LastRow + 1):
    for column in range(1, summary.LastColumn + 1):
        summary.Range[row, column].Style.Font.Size = 10
summary.Range[summary.LastRow, 1, summary.LastRow, summary.LastColumn].Style.Color = Color.get_LightGray()
summary.Range.AutoFitColumns()

workbook.SaveToFile("normalized_sales_summary.xlsx")
workbook.Dispose()

Предварительный просмотр нормализованной сводки продаж:

Normalizing and Aggregating Excel Data Using Python

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


Выбор правильного подхода Python для создания файлов Excel

Python предлагает несколько способов создания файлов Excel, и лучший подход зависит от того, как Excel используется в вашем рабочем процессе.

Free Spire.XLS for Python особенно хорошо подходит для сценариев, где:

  • Файлы Excel создаются или обновляются без установленного Microsoft Excel
  • Файлы создаются серверными службами, пакетными заданиями или запланированными задачами
  • Вам нужен точный контроль над структурой рабочего листа, форматированием и формулами
  • Excel используется как формат доставки или обмена, а не как интерактивный инструмент анализа

Для исследования данных или статистического анализа пользователи Python могут использовать другие библиотеки на более ранних этапах, в то время как библиотеки для создания Excel, такие как Free Spire.XLS, используются для создания структурированных, готовых к презентации файлов на заключительном этапе.

Это разделение сохраняет логику обработки данных в Python и логику представления в Excel, улучшая ремонтопригодность и надежность.

Для получения более подробных указаний и примеров см. Руководство по Spire.XLS for Python.


8. Общие проблемы при создании и записи файлов Excel в Python

При автоматизации создания Excel часто возникают несколько практических проблем.

  • Ошибки пути к файлу и разрешений

    Всегда проверяйте, что целевой каталог существует и что процесс имеет доступ на запись перед сохранением файлов.

  • Неожиданные типы данных

    Явно контролируйте, записываются ли значения как текст или числа, чтобы избежать ошибок вычислений в Excel.

  • Случайная перезапись файлов

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

  • Большие наборы данных

    При обработке больших объемов данных записывайте строки последовательно и избегайте ненужных операций форматирования внутри циклов.

Раннее решение этих проблем помогает обеспечить надежность автоматизации Excel по мере роста размера и сложности данных.


9. Заключение

Создание файлов Excel в Python является практическим решением для автоматизации отчетности, экспорта данных и обновления документов в реальных бизнес-средах. Объединяя создание файлов, запись структурированных данных, форматирование и рабочие процессы обновления, автоматизация Excel может выйти за рамки одноразовых сценариев и стать частью стабильной системы.

Spire.XLS for Python предоставляет надежный способ реализации этих операций в средах, где важны автоматизация, согласованность и ремонтопригодность. Вы можете подать заявку на временную лицензию, чтобы раскрыть весь потенциал автоматизации Python в обработке файлов Excel.


Часто задаваемые вопросы: создание файлов Excel в Python

Может ли Python создавать файлы Excel без установленного Microsoft Excel?

Да. Библиотеки, такие как Spire.XLS for Python, работают независимо от Microsoft Excel, что делает их подходящими для серверов, облачных сред и автоматизированных рабочих процессов.

Подходит ли Python для создания больших файлов Excel?

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

Как я могу предотвратить перезапись существующих файлов Excel?

Общим подходом является использование имен файлов с отметками времени или выделенных выходных каталогов при сохранении сгенерированных отчетов Excel.

Может ли Python обновлять файлы Excel, созданные другими системами?

Да. Python может читать, изменять и расширять файлы Excel, созданные другими приложениями, при условии, что формат файла поддерживается.

Смотрите также