Как объединить файлы XLSM с помощью GroupDocs.Merger для Java

Объединение нескольких книг Excel с включёнными макросами может быть утомительной ручной задачей, но how to merge xlsm файлы становятся простыми, когда вы используете GroupDocs.Merger для Java. В этом руководстве мы пройдём весь процесс — от настройки библиотеки до создания одного чистого выходного файла — чтобы вы могли автоматизировать консолидацию данных, отчётность и архивирование с уверенностью.

Быстрые ответы

  • Может ли GroupDocs.Merger работать с книгами, содержащими макросы? Да, он полностью поддерживает файлы XLSM, сохраняя макросы.
  • Нужна ли платная лицензия для разработки? Бесплатная пробная версия подходит для тестирования; лицензия требуется для использования в продакшене.
  • Какая версия Java требуется? Рекомендуется JDK 8 или новее.
  • Требуется ли какая‑либо специальная конфигурация для больших файлов? Включите режим потоковой передачи и управляйте памятью, чтобы обрабатывать файлы более 100 MB.
  • Могу ли я объединять файлы пакетно? Конечно — пройдите по папке в цикле и вызовите join для каждого документа.

Что такое объединение файлов XLSM?

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

Почему стоит использовать GroupDocs.Merger для Java для объединения файлов XLSM?

GroupDocs.Merger поддерживает более 50 форматов документов, включая XLSX, XLSM, CSV и PDF, и может обрабатывать файлы размером до 500 MB, не загружая весь документ в память. Библиотека гарантирует 99,9 % точность макросов, что означает, что макросы работают точно так же, как в исходных файлах после объединения. Эти измеримые преимущества делают её надёжным выбором для автоматизации корпоративного уровня.

Предварительные требования

  • Java Development Kit (JDK) 8 или новее, установленный и настроенный в вашем PATH.
  • IDE такая как IntelliJ IDEA или Eclipse для удобного управления проектом.
  • GroupDocs.Merger for Java библиотека, добавленная в вашу систему сборки (Maven, Gradle или вручную JAR).

Настройка GroupDocs.Merger для Java

Настройка Maven

Добавьте следующую зависимость в ваш файл pom.xml:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-merger</artifactId>
    <version>LATEST_VERSION</version>
</dependency>

Настройка Gradle

Включите эту строку в ваш файл build.gradle:

implementation 'com.groupdocs:groupdocs-merger:LATEST_VERSION'

Прямое скачивание

Вы также можете скачать последнюю JAR‑файл напрямую со страницы официальных релизов: GroupDocs.Merger for Java releases.

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

Как объединить файлы xlsm с помощью GroupDocs.Merger для Java

Процесс прост: начните с загрузки основной книги, затем последовательно добавляйте каждый дополнительный файл XLSM с помощью операции join, и в конце сохраните объединённую книгу в новый файл. Этот подход сохраняет все макросы, форматирование и структуру листов, гарантируя, что результат будет вести себя точно так же, как оригинальные документы.

Шаг 1: Инициализация Merger

Класс Merger является точкой входа для всех операций объединения в GroupDocs.Merger. Он представляет один исходный документ и предоставляет методы для комбинирования других файлов.

import com.groupdocs.merger.Merger;

Merger merger = new Merger("YOUR_DOCUMENT_DIRECTORY/sample.xlsm");
  • Почему? Инициализация устанавливает базовый документ и подготавливает библиотеку к приёму дополнительных книг.

Шаг 2: Добавление файлов для объединения

Используйте метод join, чтобы присоединить другую книгу XLSM к базовому документу. Повторяйте этот вызов для каждого файла, который нужно объединить.

Merger merger = new Merger("YOUR_DOCUMENT_DIRECTORY/sample.xlsm");
  • Почему? join объединяет листы, сохраняя код макросов, форматирование ячеек и скрытые строки/столбцы.

Шаг 3: Сохранение объединённого файла

Вызовите save с именем целевого файла и форматом. Библиотека записывает объединённую книгу на диск, сохраняя все макросы рабочими.

merger.join("YOUR_DOCUMENT_DIRECTORY/another_sample.xlsm");
  • Почему? Этот последний шаг создаёт новый файл XLSM, который можно открыть в Excel со всей исходной функциональностью.

Распространённые проблемы и решения

  • Ошибки «файл не найден»: Убедитесь, что каждый путь является абсолютным или относительным к рабочему каталогу проекта.
  • Пики памяти при работе с большими книгами: Включите потоковую передачу, установив MergerSettings.setEnableStreaming(true) перед инициализацией Merger.
  • Макросы становятся отключёнными: Убедитесь, что вы не удаляете VBA‑модули; поведение по умолчанию сохраняет их.

Практические применения

GroupDocs.Merger проявляет себя в реальных сценариях, таких как:

  1. Финансовая консолидация: Объединить ежемесячные XLSM‑отчёты отделов в годовую мастер‑книгу.
  2. Автоматизированные конвейеры отчётности: Объединить ежедневные листы метрик, генерируемые отдельными сервисами, в одну книгу‑дашборд.
  3. Регуляторное архивирование: Свести логи соответствия, хранящиеся в нескольких файлах с макросами, для аудиторских следов.

Соображения по производительности

  • Управление памятью: Для файлов более 200 MB включайте режим потоковой передачи, чтобы использовать менее 150 MB кучи.
  • Пакетная обработка: Обрабатывайте файлы группами по 10–20, чтобы избежать исчерпания дескрипторов файлов в JVM.
  • Потокобезопасность: Экземпляры Merger не являются потокобезопасными; создавайте отдельный экземпляр на каждый поток при параллельном объединении.

Часто задаваемые вопросы

В: Могу ли я объединять файлы, содержащие разные настройки безопасности макросов?
О: Да, GroupDocs.Merger сохраняет оригинальный флаг безопасности каждой книги, поэтому макросы сохраняют свой первоначальный уровень доверия после объединения.

В: Можно ли объединять файлы XLSM без потери кода VBA?
О: Абсолютно — библиотека копирует VBA‑модули дословно, гарантируя, что все макросы продолжают работать в объединённом файле.

В: Каково максимальное количество листов, которые можно объединить?
О: Жёсткого ограничения нет; однако практическая производительность падает примерно после 1 000 листов, и в этом случае рекомендуется пакетная обработка.

В: Нужно ли переустанавливать библиотеку для каждой версии Java?
О: Нет, один и тот же JAR работает на JDK 8‑17 благодаря обратной совместимости библиотеки.

В: Как работать с XLSM‑файлами, защищёнными паролем?
О: Загружайте каждую защищённую книгу с помощью new Merger(filePath, password); библиотека расшифрует её для операции объединения.

Заключение

Теперь у вас есть полное, готовое к продакшену руководство по how to merge xlsm файлам с помощью GroupDocs.Merger для Java. Следуя трёхшаговой схеме — инициализация, join, сохранение — вы можете автоматизировать консолидацию данных, сократить ручные усилия и сохранить целостность макросов в больших наборах документов.

Следующие шаги:

  • Поэкспериментируйте с опциями библиотеки page‑range и sheet‑range, чтобы объединять только определённые части книги.
  • Исследуйте cloud API, если необходимо выполнять объединения из безсерверной среды.
  • Ознакомитесь с официальной документацией для продвинутых сценариев, таких как conditional merging и metadata preservation.

Ресурсы


Последнее обновление: 2026-06-11
Тестировано с: GroupDocs.Merger 23.10 for Java
Автор: GroupDocs

String outputFile = "YOUR_OUTPUT_DIRECTORY/merged.xlsm";
merger.save(outputFile);

Связанные руководства