Категория

Объединение нескольких CSV-файлов в один Excel (отдельные листы)

2026-07-08 06:52:12 jie zou
AI Summarize:
ChatGPT
ChatGPT
Claude
Grok
Perplexity
Quick
Quick
Concise overview
Highlights
Key takeaways
Detailed
Structured explanation
Brief
One sentence summary
Summarize |

Объединение нескольких CSV-файлов в одну книгу Excel

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

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

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

Рассматриваемые методы:

Способ 1. Копирование и вставка CSV-файлов на отдельные листы

Если вам нужно объединить всего несколько CSV-файлов, самое простое решение — скопировать их содержимое на разные листы вручную.

Важная деталь: открывайте каждый CSV-файл через Microsoft Excel, а не через текстовый редактор, такой как Блокнот. Когда CSV открывается в Excel, строки и столбцы правильно распознаются на основе разделителя. Если вы скопируете текст напрямую из Блокнота, Excel может вставить всё в один столбец вместо автоматического разделения значений.

Копирование и вставка CSV-файлов на отдельные листы

Шаги

  1. Откройте Microsoft Excel и создайте новую книгу.
  2. Откройте первый CSV-файл с помощью Excel.
  3. Выделите все данные (Ctrl + A) и скопируйте их (Ctrl + C).
  4. Вернитесь в новую книгу и вставьте данные на первый лист.
  5. При необходимости переименуйте лист.
  6. Повторите процесс для каждого оставшегося CSV-файла, каждый раз создавая новый лист.
  7. Сохраните книгу как файл .xlsx.

Плюсы

  • Не требуется программирование.
  • Работает в любой версии Excel.
  • Сохраняет один CSV на лист.
  • Идеально подходит для разовых задач с небольшим количеством файлов.

Минусы

  • Занимает много времени при обработке большого количества файлов.
  • Полностью ручной процесс.
  • Легко допустить ошибку при работе с десятками CSV-файлов.

Способ 2. Использование VBA-макроса для импорта нескольких CSV-файлов

Если вы часто выполняете эту задачу в Excel, VBA-макрос может автоматизировать весь процесс. Макрос сканирует папку, открывает каждый CSV-файл, копирует его лист в текущую книгу и называет лист в соответствии с именем CSV-файла.

Объединение нескольких CSV-файлов в Excel с помощью VBA-макроса

Шаг 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
)

Результат:

Объединение нескольких CSV-файлов в одну книгу Excel с помощью Python

По сравнению с ручными методами или 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.

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