
При работе с отчетами, выгруженными из различных систем, часто приходится иметь дело с десятками CSV-файлов. Например, каждый отдел, магазин или месяц может генерировать свой собственный CSV-отчет. Хотя это упрощает сбор данных, управление большим количеством отдельных файлов быстро становится неудобным.
Практичное решение — объединить все CSV-файлы в одну книгу Excel, сохранив каждый CSV на отдельном листе. Это позволяет сохранить структуру исходных файлов, упрощает навигацию и дает возможность делиться одним файлом книги вместо множества отдельных документов.
В этой статье мы представим три практических метода: от простого ручного подхода до автоматизации Excel с помощью VBA и полноценного программного решения на Python.
Рассматриваемые методы:
- Способ 1. Копирование и вставка CSV-файлов на отдельные листы
- Способ 2. Использование VBA-макроса для импорта нескольких CSV-файлов
- Способ 3. Объединение нескольких CSV-файлов на Python с помощью Spire.XLS
Способ 1. Копирование и вставка CSV-файлов на отдельные листы
Если вам нужно объединить всего несколько CSV-файлов, самое простое решение — скопировать их содержимое на разные листы вручную.
Важная деталь: открывайте каждый CSV-файл через Microsoft Excel, а не через текстовый редактор, такой как Блокнот. Когда CSV открывается в Excel, строки и столбцы правильно распознаются на основе разделителя. Если вы скопируете текст напрямую из Блокнота, Excel может вставить всё в один столбец вместо автоматического разделения значений.

Шаги
- Откройте Microsoft Excel и создайте новую книгу.
- Откройте первый CSV-файл с помощью Excel.
- Выделите все данные (Ctrl + A) и скопируйте их (Ctrl + C).
- Вернитесь в новую книгу и вставьте данные на первый лист.
- При необходимости переименуйте лист.
- Повторите процесс для каждого оставшегося CSV-файла, каждый раз создавая новый лист.
- Сохраните книгу как файл .xlsx.
Плюсы
- Не требуется программирование.
- Работает в любой версии Excel.
- Сохраняет один CSV на лист.
- Идеально подходит для разовых задач с небольшим количеством файлов.
Минусы
- Занимает много времени при обработке большого количества файлов.
- Полностью ручной процесс.
- Легко допустить ошибку при работе с десятками CSV-файлов.
Способ 2. Использование VBA-макроса для импорта нескольких CSV-файлов
Если вы часто выполняете эту задачу в Excel, VBA-макрос может автоматизировать весь процесс. Макрос сканирует папку, открывает каждый CSV-файл, копирует его лист в текущую книгу и называет лист в соответствии с именем CSV-файла.

Шаг 1. Создание пустой книги
Откройте Excel и создайте новую книгу. Эта книга станет целевой, в которой будут храниться все импортированные листы.
Шаг 2. Открытие редактора VBA
Нажмите Alt + F11, чтобы открыть редактор Visual Basic.
Выберите Insert > Module, затем вставьте следующий код в новый модуль.
Sub MergeCSVFilesToSheets()
Dim folderPath As String
Dim fileName As String
Dim wbCSV As Workbook
Dim ws As Worksheet
Dim targetWb As Workbook
Dim sheetName As String
Set targetWb = ThisWorkbook
folderPath = InputBox("Введите путь к папке с CSV-файлами:")
If Right(folderPath, 1) <> "\" Then
folderPath = folderPath & "\"
End If
fileName = Dir(folderPath & "*.csv")
Application.ScreenUpdating = False
Do While fileName <> ""
Workbooks.Open folderPath & fileName
Set wbCSV = ActiveWorkbook
sheetName = Left(fileName, InStrRev(fileName, ".") - 1)
wbCSV.Worksheets(1).Copy After:=targetWb.Sheets(targetWb.Sheets.Count)
Set ws = targetWb.Sheets(targetWb.Sheets.Count)
On Error Resume Next
ws.Name = Left(sheetName, 31)
On Error GoTo 0
wbCSV.Close SaveChanges:=False
fileName = Dir
Loop
Application.ScreenUpdating = True
MsgBox "CSV-файлы успешно объединены."
End Sub
Шаг 3. Запуск макроса
Нажмите F5, введите путь к папке с вашими CSV-файлами, и макрос автоматически импортирует каждый CSV на отдельный лист.
Плюсы
- Намного быстрее ручного копирования.
- Работает полностью внутри Microsoft Excel.
- Автоматически создает отдельный лист для каждого CSV-файла.
- Подходит для пользователей, регулярно работающих с Excel.
Минусы
- Требует использования книг с поддержкой макросов.
- Пользователи должны разрешить выполнение VBA-макросов.
- Менее подходит для автоматизации без участия пользователя или на стороне сервера.
Способ 3. Объединение нескольких CSV-файлов на Python с помощью Spire.XLS
Для повторяющихся рабочих процессов, запланированных задач или бизнес-приложений программная автоматизация часто является наиболее эффективным решением.
Многие разработчики сразу вспоминают о Pandas для обработки CSV. Pandas — отличная библиотека для чтения, анализа и преобразования табличных данных. Однако её основная цель — анализ данных, а не создание документов.
Если ваш рабочий процесс выходит за рамки простого импорта CSV-файлов — например, включает форматирование листов, применение стилей, вставку диаграмм, защиту книг или экспорт итоговой книги в PDF — библиотека для работы с электронными таблицами, такая как Free Spire.XLS for Python, предлагает более полное решение.
Сначала установите библиотеку:
pip install Spire.XLS
Затем используйте следующий код для объединения всех CSV-файлов из папки в одну книгу Excel, где каждый CSV станет отдельным листом.
import os
from spire.xls import Workbook, WorksheetCopyType, FileFormat
input_folder = "input"
output_folder = "output"
# Создание целевой книги
merged_workbook = Workbook()
merged_workbook.Worksheets.Clear()
# Обработка каждого CSV-файла
for csv_file in os.listdir(input_folder):
if csv_file.endswith(".csv"):
input_path = os.path.join(input_folder, csv_file)
workbook = Workbook()
workbook.LoadFromFile(input_path, ",", 1, 1)
sheet = workbook.Worksheets[0]
merged_workbook.Worksheets.AddCopy(
sheet,
WorksheetCopyType.CopyAll
)
merged_workbook.SaveToFile(
os.path.join(output_folder, "Merged.xlsx"),
FileFormat.Version2013
)
Результат:

По сравнению с ручными методами или VBA, этот подход гораздо проще интегрировать в автоматизированные рабочие процессы. После создания книги вы можете продолжить обработку с помощью Spire.XLS, например:
- Применять шрифты, цвета, границы и форматы чисел.
- Закреплять области или автоматически настраивать ширину столбцов.
- Создавать диаграммы и сводные таблицы.
- Защищать листы или всю книгу.
- Экспортировать готовую книгу в PDF или другие форматы.
Эти возможности делают библиотеку подходящей не только для объединения CSV, но и для полноценных конвейеров генерации отчетов.
Сравнение трех способов
| Способ | Требуется программирование | Пакетная обработка | Лучше всего подходит для |
|---|---|---|---|
| Копирование и вставка | Нет | Ограниченно | Разовые задачи с небольшим количеством CSV-файлов |
| VBA-макрос | Базовый VBA | Да | Пользователей Excel, регулярно импортирующих CSV-файлы |
| Python + Free Spire.XLS | Python | Отлично | Автоматизированных рабочих процессов, бизнес-приложений и пакетной обработки |
Заключение
Выбор лучшего метода зависит от того, как часто вам нужно выполнять эту задачу.
Если вам нужно объединить всего несколько CSV-файлов время от времени, ручное копирование и вставка данных на отдельные листы — самое быстрое решение.
Если вы работаете преимущественно в Excel и выполняете эту задачу регулярно, VBA-макрос поможет автоматизировать процесс с минимальными усилиями.
Для разработчиков, создающих повторяющиеся рабочие процессы или интегрирующих обработку CSV в приложения, Python со Spire.XLS предлагает наибольшую гибкость. Помимо объединения CSV-файлов, это позволяет выполнять расширенное манипулирование электронными таблицами и генерацию документов, что делает его пригодным для широкого спектра сценариев автоматизации.
Часто задаваемые вопросы
Можно ли объединить сотни CSV-файлов в одну книгу Excel?
Да. VBA может справиться со многими файлами, но для очень больших пакетов или автоматизированных рабочих процессов решение на Python, как правило, более надежно и масштабируемо.
Станет ли каждый CSV-файл отдельным листом?
Да. Все три метода, описанные в этой статье, сохраняют каждый CSV как отдельный лист, а не объединяют все данные на один лист.
Могут ли названия листов основываться на именах CSV-файлов?
Да. И VBA-макрос, и пример на Python автоматически используют имя CSV-файла (без расширения) в качестве названия листа.
Что делать, если мои CSV-файлы используют кодировку UTF-8 или другую?
Большинство CSV-файлов можно импортировать без проблем. Если ваши файлы используют другую кодировку или разделитель, настройте параметры импорта перед обработкой.
Можно ли продолжать редактирование книги после объединения CSV-файлов?
Безусловно. После создания книги вы можете форматировать листы, вставлять диаграммы, добавлять формулы, защищать книгу или экспортировать ее в PDF, как и любой другой файл Excel.