Реализация парсинга данных, изображений и диаграмм Excel на Python
В сценариях серверной обработки данных на Python, автоматизированного парсинга отчётов, миграции данных и т.п. массовое чтение данных ячеек, встроенных изображений и элементов диаграмм из файлов Excel является частой задачей разработки. По сравнению с обычными библиотеками для работы с Excel, описанный в данной статье компонент позволяет в одном решении реализовать чтение текстовых и числовых данных, парсинг данных ячеек различных форматов, извлечение изображений и экспорт диаграмм — без зависимости от среды Office, что делает его пригодным для чисто серверных сценариев. В статье с практическими примерами кода подробно рассматривается логика реализации и технические детали четырёх ключевых возможностей парсинга Excel.
Данная разработка основана на Free Spire.XLS for Python — компоненте, предоставляющем лёгкий API для чтения и записи Excel, поддерживающем полный парсинг элементов файлов основного формата xlsx, отличающемся низким потреблением ресурсов и лаконичным интерфейсом, что делает его подходящим для сценариев автоматизированной обработки данных.
I. Установка окружения компонента
Данный компонент для работы с Excel поддерживает установку одной командой через pip, совместим с Python 3.0 и выше, не требует дополнительной настройки системного окружения и может быть быстро развёрнут как в офлайн-, так и в онлайн-среде разработки. Ниже приведена стандартная команда установки и описание настройки окружения.
Команда установки через pip
pip install spire.xls.free
Примечания по установке
- Процесс установки не включает дополнительных зависимых пакетов — устанавливается только核心-модуль парсинга Excel, объём установки невелик;
- При наличии нескольких версий Python необходимо использовать соответствующие команды pip3, python -m pip в зависимости от фактической среды выполнения, чтобы гарантировать установку пакета в целевую среду;
- После завершения установки можно сразу импортировать модуль через import spire.xls без ручной настройки системных переменных.
После завершения установки можно приступать к реализации функций парсинга и экспорта данных, изображений и диаграмм Excel с помощью последующего кода. Ниже поэтапно рассматривается конкретная реализация каждой из ключевых функций.
II. Массовое чтение базовых данных ячеек листа
Для типовых сценариев парсинга данных Excel можно получить используемую область данных листа и двойным обходом строк и столбцов реализовать массовое чтение данных всех ячеек. Данный подход обходит только有效ную область данных, пропуская пустые строки и столбцы, что повышает эффективность парсинга и подходит для сценариев массового сбора табличных данных.
Код реализации
from spire.xls import *
# Инициализация рабочей книги и загрузка файла Excel
wb = Workbook()
wb.LoadFromFile("Input.xlsx")
# Получение первого листа
sheet = wb.Worksheets[0]
# Получение занятой области данных листа
locatedRange = sheet.AllocatedRange
# Двойной обход всех ячеек с выводом данных
for i in range(len(locatedRange.Rows)):
for j in range(len(locatedRange.Rows[i].Columns)):
print(locatedRange[i + 1, j + 1].Value + " «, end =’’)
print(»")
Описание технических деталей
- Свойство AllocatedRange автоматически определяет有效ную область с данными на листе, избегая расточительного обхода всего листа;
- Индексация ячеек начинается с 1, что соответствует нативной логике нумерации строк и столбцов Excel и не требует дополнительного преобразования;
- Двойной цикл поочерёдно перебирает коллекции строк и столбцов, выводя исходные значения по каждой ячейке и полностью сохраняя структуру размещения табличных данных.
III. Точный парсинг данных ячеек различных типов
Данные ячеек Excel включают текст, числа, формулы, даты, логические значения и другие форматы; универсальный способ получения через Value не позволяет точно различить тип данных. Компонент предоставляет специализированные свойства для адресного парсинга содержимого ячеек разных форматов, избегая исключений при преобразовании типов данных и подходя для сценариев тонкой обработки данных.
Код парсинга основных типов данных
# Получение целевой ячейки по строке и столбцу
cell = sheet.Range[row, column]
# Парсинг данных различных форматов
text = cell.Text # Текстовое содержимое
number = cell.NumberValue # Чисто числовое значение
formula = cell.Formula # Исходная формула ячейки
formulaResult = cell.FormulaValue # Результат вычисления формулы
date = cell.DateTimeValue # Данные в формате даты
boolean = cell.BooleanValue # Логические данные
value = cell.Value # Универсальное значение (число/текст с автоадаптацией)
value2 = cell.Value2 # Исходное значение на основе объекта
Описание технических деталей
- Для ячеек с формулами можно различить исходный текст формулы и результат вычисления формулы, удовлетворяя двойным потребностям проверки формул и извлечения данных;
- DateTimeValue автоматически адаптируется к стандартному формату даты Excel и напрямую возвращает объект даты, пригодный для дальнейшей обработки, без ручного разбора строк;
- Value2 сохраняет исходные объектные данные ячейки и может использоваться для совместимой обработки ячеек специальных и пользовательских форматов.
IV. Массовое извлечение встроенных изображений листа
В листах Excel часто встроены бизнес-скриншоты, изображения-подтверждения и другие ресурсы; обычные библиотеки парсинга способны читать только текстовые данные и не могут извлекать мультимедийные элементы. Через интерфейс обхода коллекции изображений листа можно массово получить все встроенные изображения и экспортировать их в стандартные файлы формата PNG, реализуя массовое локальное сохранение графических ресурсов.
Код реализации
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("Input.xlsx")
sheet = workbook.Worksheets[0]
# Обратный обход всех изображений листа с массовым экспортом
for i in range(sheet.Pictures.Count — 1, −1, −1):
pic = sheet.Pictures[i]
pic.Picture.Save("ExtractImages\\Image-{0:d}.png".format(i), ImageFormat.get_Png())
Описание технических деталей
- Используется обратный обход коллекции изображений, что позволяет избежать смещения индексов и пропуска элементов при прямом обходе;
- Поддерживается настройка пути сохранения и правил именования изображений; по умолчанию экспортируется формат PNG без потерь, сохраняющий чёткость оригинала;
- Pictures.Count точно подсчитывает количество всех встроенных изображений текущего листа — без пропусков и избыточности.
V. Массовый экспорт диаграмм Excel в изображения
Элементы диаграмм Excel — столбчатые, линейные, круговые и т.п. — невозможно напрямую прочитать через текстовые интерфейсы; необходимо через специализированный интерфейс отрендерить диаграмму в поток изображения, а затем массово сохранить в файлы изображений, реализуя офлайн-экспорт и повторное отображение визуализированных диаграмм.
Код реализации
from spire.xls import *
workbook = Workbook()
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx")
sheet = workbook.Worksheets[0]
# Преобразование всех диаграмм листа в потоки изображений
image_streams = workbook.SaveChartAsImage(sheet)
# Обход потоков изображений и массовое сохранение
for i, image_stream in enumerate(image_streams):
image_stream.Save(f"Output/chart-{i}.png")
# Освобождение ресурсов рабочей книги
workbook.Dispose()
Описание технических деталей
- Интерфейс SaveChartAsImage позволяет за один раз получить байтовые потоки изображений всех диаграмм листа без необходимости поочерёдного поиска элементов диаграмм;
- Сохранение файлов на основе потоков изображений обеспечивает более высокую эффективность чтения и записи и подходит для сценариев массового экспорта диаграмм;
- Метод Dispose() предназначен для активного освобождения ресурсов чтения файла, что позволяет избежать переполнения памяти и блокировки файлов при массовом парсинге — обязательная операция в сценариях пакетной обработки.
VI. Общее техническое резюме
В данной статье реализованы возможности всестороннего парсинга Excel в среде Python, охватывающие четыре ключевых сценария: массовое чтение базовых ячеек, точный парсинг разнотипных данных, извлечение встроенных изображений, экспорт диаграмм в изображения. Весь набор решений не требует зависимости от настольного ПО Microsoft Office, WPS и т.п.; чисто интерфейсные операции позволяют бесшовно интегрировать его в серверные скрипты автоматизации, инструменты синхронизации данных и системы парсинга отчётов.
Ключевые преимущества заключаются в лёгкости интерфейса, всесторонней адаптации типов данных, развитых возможностях парсинга мультимедийных элементов, а также поддержке ручного освобождения ресурсов, что обеспечивает стабильную адаптацию к бизнес-сценариям обработки Excel с большими объёмами и высокой частотой.