Содержание
Установить с помощью Pypi
pip install Spire.Xls
Похожие ссылки

Excel — один из наиболее широко используемых инструментов для обработки структурированных данных, от финансовых моделей до отчетов о продажах и всего, что между ними. Но по мере того, как рабочие книги становятся больше, с несколькими листами, охватывающими разные темы или отделы, управление ими и их совместное использование становится громоздким.
Представьте ситуацию, когда вы хотите отправить только лист "Продажи" команде продаж, лист "HR" отделу кадров и лист "Финансы" вашему бухгалтеру. Хранение всего в одной гигантской рабочей книге делает это грязным. Лучшее решение — разделить листы Excel на отдельные файлы — чтобы каждый получатель получал только те данные, которые ему нужны.
В этой статье мы рассмотрим три проверенных метода для достижения этой цели. Мы начнем с быстрого ручного метода, перейдем к макросам VBA внутри Excel и закончим подходом на Python, который идеально подходит для разработчиков и сценариев автоматизации.
Зачем разделять листы Excel на отдельные файлы?
Существует несколько практических причин, по которым разделение рабочей книги на несколько файлов полезно:
- Выборочный обмен: не каждому заинтересованному лицу нужен доступ ко всем данным. Разделение листов позволяет распространять только релевантные файлы.
- Улучшенная производительность: большие рабочие книги с множеством листов могут медленно открываться и обрабатываться. Разделение их на файлы меньшего размера улучшает производительность.
- Лучшая организация: отдельные файлы могут сделать управление проектами и отчетность более структурированными.
- Автоматизация и отчетность: разделение часто является частью автоматизированных рабочих процессов, где для разных отделов создаются разные отчеты.
- Контроль версий: файлы меньшего размера легче отслеживать и поддерживать в системах контроля версий по сравнению с одной гигантской рабочей книгой.
Независимо от того, являетесь ли вы обычным пользователем Excel или разработчиком, создающим автоматизированные конвейеры отчетности, разделение листов — это задача, которую стоит освоить.
Быстрый ручной способ: копирование листов в новые книги
Если вам нужно разделить всего несколько листов и вы не против немного покликать, встроенный интерфейс Excel предоставляет простой способ сделать это.
Как это работает:
- Откройте свою рабочую книгу с помощью MS Excel.
- Щелкните правой кнопкой мыши на вкладке листа, который вы хотите отделить, и выберите Переместить или скопировать....
- В выпадающем списке В книгу: выберите (новая книга).
- Установите флажок Создать копию, затем нажмите OK.
- Сохраните новую рабочую книгу под новым именем.
- Повторите этот процесс для каждого листа, который вы хотите разделить на отдельный файл.
Плюсы:
- Не требует навыков программирования.
- Встроено прямо в Excel — не требуется установка.
- Просто и надежно для одноразовых задач.
Минусы:
- Занимает много времени, если вам нужно разделить много листов.
- Склонность к ошибкам (забыть сохранить или правильно переименовать файлы).
- Нет автоматизации — вы должны повторять шаги вручную каждый раз.
Лучше всего подходит для:
- Пользователей, которым редко нужно разделять листы.
- Быстрых, одноразовых задач, где требуется отделить всего пару листов.
Автоматизация в Excel: макрос VBA для разделения листов
Для более частого использования встроенный в Excel редактор VBA (Visual Basic for Applications) предоставляет способ автоматизировать разделение. С помощью небольшого макроса Excel может пройтись по каждому листу и сохранить его как новую рабочую книгу, экономя часы ручной работы.
Как это работает:
- Откройте Excel и нажмите Alt + F11, чтобы открыть редактор VBA.
- Перейдите в Insert > Module.
- Вставьте следующий код в окно модуля:
- Нажмите F5 (или перейдите в > Run Sub/UserForm), чтобы выполнить макрос.
- Excel создаст отдельные файлы для каждого листа в той же папке, что и ваша исходная рабочая книга.
Sub SplitSheetsIntoWorkbooks()
Dim ws As Worksheet
Dim newWorkbook As Workbook
Dim originalWorkbook As Workbook
Set originalWorkbook = ThisWorkbook
Application.ScreenUpdating = False
For Each ws In originalWorkbook.Worksheets
ws.Copy
Set newWorkbook = ActiveWorkbook
newWorkbook.SaveAs Filename:=originalWorkbook.Path & "\" & ws.Name & ".xlsx"
newWorkbook.Close SaveChanges:=False
Next ws
MsgBox "Все листы были сохранены как отдельные файлы!"
End Sub
Плюсы:
- Полностью автоматизировано — один клик, и каждый лист экспортирован.
- Встроено в Excel — не требуется дополнительное программное обеспечение.
- Значительно экономит время по сравнению с ручным подходом.
Минусы:
- Требует включения макросов, что некоторые организации ограничивают из соображений безопасности.
- VBA несколько устарел, и отладка ошибок может быть утомительной для новичков.
- Ограниченная гибкость (например, обработка очень больших рабочих книг или пользовательские правила экспорта требуют редактирования макроса).
Лучше всего подходит для:
- Пользователей Excel среднего и продвинутого уровня.
- Сценариев, когда вам часто нужно разделять листы в рабочих книгах.
Автоматизация с помощью Python: сохранение каждого листа как отдельного файла
Если вы разработчик или вам нужна максимальная гибкость, Python предлагает современный подход. Используя библиотеки, такие как Spire.XLS for Python, вы можете обрабатывать файлы Excel программно и разделять листы в пакетном режиме. Это идеально подходит для рабочих процессов, связанных с большими файлами, несколькими рабочими книгами или интеграцией с другими системами.
Как это работает:
- Установите Python (если у вас его еще нет).
- Установите библиотеку Spire.XLS for Python:
- Используйте следующий скрипт:
pip install spire.xls
from spire.xls import *
from spire.xls.common import *
# Create an object of the Workbook class
workbook = Workbook()
# Load an Excel file
workbook.LoadFromFile("Sample.xlsx")
# Specify the folder path for the generated Excel files
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# Iterate through all worksheets in the Excel file
for worksheet in workbook.Worksheets:
# For each worksheet, create a new Workbook object
newWorkbook = Workbook()
# Remove the worksheets from the new workbook
newWorkbook.Worksheets.Clear()
# Copy the worksheet from the Excel file to the new workbook
newWorkbook.Worksheets.AddCopy(worksheet)
# Save the new workbook to the specified folder
newWorkbook.SaveToFile(folderPath + worksheet.Name + ".xlsx", FileFormat.Version2016)
workbook.Dispose()
Вот полное руководство о том, как разделить Excel по листам, строкам и столбцам в Python.
Плюсы:
- Высокая гибкость — вы можете расширить скрипт для фильтрации листов, разделения по строкам/столбцам или экспорта в CSV/PDF.
- Идеально подходит для пакетной обработки и крупномасштабной автоматизации.
- Интегрируется с другими системами и рабочими процессами.
Минусы:
- Требует некоторых знаний в области программирования.
- Начальная настройка (Python + библиотеки) занимает больше времени, чем VBA.
Лучше всего подходит для:
- Разработчиков, автоматизирующих конвейеры данных.
- Предприятий с большими, повторяющимися задачами разделения.
- Продвинутых пользователей, которым нужно больше контроля, чем предлагает VBA.
Итог: какой метод выбрать?
Разделение листов Excel на отдельные файлы — распространенная задача, но правильный метод зависит от вашего контекста:
- Быстрый ручной способ: идеально, если вам нужно отделить пару листов время от времени. Это легко и не требует никакого кодирования.
- Макрос VBA: основной метод для опытных пользователей Excel. После настройки он может сэкономить часы ручной работы, особенно если вы часто разделяете рабочие книги.
- Скрипт Python: лучший вариант для разработчиков или всех, кто создает автоматизированные рабочие процессы. Он обеспечивает полный контроль, масштабируемость и возможность расширения решения для соответствия сложным бизнес-требованиям.
В конце концов, выбранный вами метод сводится к тому, как часто вам нужно разделять листы и насколько вам комфортно с автоматизацией. Случайные пользователи могут положиться на интерфейс Excel, в то время как профессионалы получают больше преимуществ от автоматизации с помощью VBA или Python.