Мы рады объявить о выпуске GroupDocs.Merger for .NET v26.9, доступном с сентября 2026 года. В этом релизе реализовано построчное объединение электронных таблиц, улучшен выбор страниц TIFF через PageBuilder, усовершенствовано управление размерами предварительного просмотра, устранены проблемы конкурентного доступа при работе с Visio и DOC, а также заменены несколько режимов «тихого» сбоя на понятные исключения — API стал более надёжным и предсказуемым.
Что нового в этом выпуске
- [Feature] Объединение строк Excel из нескольких файлов в один лист (MERGERNET-2198)
- [Feature] Применение выбора страниц
PageBuilderк первому документу TIFF (MERGERNET-1372) - [Improvement] Генерация исключения, если
SetLicenseне может найти файл лицензии (MERGERNET-2183) - [Improvement] Отклонение пустого потока лицензии в
SetLicense(MERGERNET-2184) - [Improvement] Генерация чёткого исключения при попытке объединить изображение или аудиофайл в неподдерживаемый формат (MERGERNET-2190)
- [Improvement] Удаление
System.Drawing.Commonиз кроссплатформенных пакетов и чёткое сообщение о недостающих зависимостях (MERGERNET-2202) - [Bug] Закрытие исходного файла после того, как Merger открыл или объединил документ по пути (MERGERNET-2187)
- [Bug] Вызов фабрики потоков только один раз при создании Merger (MERGERNET-2189)
- [Bug] Исправление повреждённого вывода DOC при объединении PDF или XPS в DOC из нескольких потоков (MERGERNET-2192)
- [Bug] Применение изменения ориентации страницы ко всем страницам, если номера страниц не указаны (MERGERNET-2194)
- [Bug] Учет запрошенной ширины и высоты предварительного просмотра во всех семействах форматов документов (MERGERNET-2196)
- [Bug] Отклонение
ExtractPagesиRemovePages, вызванных без указания номеров страниц, вместо тихого создания пустого или неизменённого документа (MERGERNET-2197) - [Bug] Исправление случайных сбоев Visio‑документов с
ArgumentNullException trueTypeFontпри одновременной обработке (MERGERNET-2199) - [Bug] Исправление сбоев PDF‑портфелей с
NullReferenceException, когда вложенный файл не имеет даты изменения (MERGERNET-2200)
Изменения публичного API
1. Объединение электронных таблиц — построчный режим (новый API)
Новые публичные типы в пространстве имён GroupDocs.Merger.Domain.Options:
| Тип | Описание |
|---|---|
| SpreadsheetJoinOptions | Параметры объединения для электронных таблиц, наследуются от PageJoinOptions. Свойства: Mode, SkipRows, SheetMatching. |
| SpreadsheetJoinMode | Worksheets (по умолчанию) добавляет листы объединяемого файла как отдельные листы, как и раньше. Rows добавляет строки каждого объединяемого файла ниже последней строки с данными соответствующего листа результата. |
| SpreadsheetSheetMatching | ByIndex (по умолчанию) добавляет лист 2 к листу 2, лист 3 к листу 3 и т.д.; FirstSheetOnly добавляет только первый лист каждого объединяемого файла. |
SkipRowsпропускает первые N строк каждого объединяемого файла, например строку заголовка. Первый документ всегда берётся полностью.SkipRowsиSheetMatchingне влияют в режимеWorksheets.- Поддерживаемые форматы: XLSX, XLS, XLSM, XLSB, XLTX, XLTM, XLT, XLAM и ODS.
- Переносятся: значения ячеек, формулы (относительные ссылки корректируются), стили, объединённые ячейки и высоты строк. Не переносятся: диаграммы, изображения, сводные таблицы, таблицы, условное форматирование и проверка данных.
- Отрицательное значение
SkipRowsгенерируетGroupDocsMergerException(«The count of rows to skip can not be negative.»). - Превышение лимита строк (65 536 для XLS/XLT, 1 048 576 для остальных) генерирует
GroupDocsMergerException. ApplyPageBuilderгенерируетGroupDocsMergerException, пока ожидается объединение таблицы в режимеRows.
2. TIFF — PageBuilder применяет выбор страниц первого документа
Изменений в API нет. CreatePageBuilder и ApplyPageBuilder теперь применяют выбранные страницы из первого TIFF‑документа; ранее всегда включались все страницы первого документа. Объединения без использования PageBuilder дают тот же результат, что и раньше.
После объединения с ImageJoinOptions CreatePageBuilder и ApplyPageBuilder теперь генерируют GroupDocsMergerException, потому что объединённые изображения компонуются в один макет, а не в последовательность страниц.
3. Лицензирование — SetLicense больше не «тихо» падает
License.SetLicense(string licensePath)генерируетInvalidOperationException(«License not found: …») при отсутствии файла лицензии.License.SetLicense(Stream licenseStream)генерируетArgumentNullExceptionдля пустого потока.
4. Операции со страницами при пустом списке страниц
ExtractPagesиRemovePages, вызванные без номеров страниц, теперь генерируютGroupDocsMergerException(«There are no page numbers to extract.» / «There are no page numbers to remove.»).ChangeOrientation, вызванный без номеров страниц, теперь меняет ориентацию каждой страницы для PDF, XPS, документов обработки текста, электронных таблиц и Visio.
5. Размер предварительного просмотра
GeneratePreview теперь изменяет размер изображения каждой страницы до запрошенных Width и Height — растягивая до точных размеров, если указаны оба параметра. Отрицательное значение Width или Height теперь генерирует GroupDocsMergerException.
6. System.Drawing.Common и недостающие зависимости
- Кроссплатформенные пакеты (
GroupDocs.Merger.Net60,GroupDocs.Merger.Net80,GroupDocs.Merger.Net100) больше не зависят отSystem.Drawing.Common. - При отсутствии необходимых runtime‑зависимостей генерируется
MissingDependencyExceptionс указанием недостающего компонента и инструкциями по установке.
7. Объединение изображений и аудио в неподдерживаемые форматы
Попытка объединить изображение или аудиофайл в неподдерживаемый формат теперь генерирует FileTypeNotSupportedException («Joining ‘…’ into ‘…’ is not supported»).
Новые возможности
- Построчное объединение электронных таблиц: строки нескольких таблиц теперь могут быть добавлены в один лист вместо создания отдельных листов, с возможностью пропуска строк‑заголовков и сопоставления листов по позиции.
PageBuilderдля TIFF‑документов: выбор страниц, сделанный с помощьюPageBuilder, теперь применяется и к первому TIFF‑документу — ранее все его страницы всегда включались.- Точные размеры предварительного просмотра:
GeneratePreviewтеперь возвращает изображения с запрошеннымиWidthиHeightдля всех семейств форматов документов. - Исправления конкурентных проблем: вывод Visio и DOC больше не падает случайно при обработке из нескольких потоков.
- Управление ресурсами: документы, открытые или объединённые по пути к файлу, больше не оставляют исходный файл открытым; фабрики потоков вызываются ровно один раз.
- Более понятные ошибки: несколько операций, ранее «тихо» завершавшихся с ошибкой, теперь бросают описательные исключения.
Пример кода
using GroupDocs.Merger;
using GroupDocs.Merger.Domain.Options;
using (var merger = new Merger("january.xlsx"))
{
var options = new SpreadsheetJoinOptions
{
Mode = SpreadsheetJoinMode.Rows, // добавить строки в существующие листы
SkipRows = 1 // пропустить строку заголовка в каждом объединяемом файле
};
merger.Join("february.xlsx", options);
merger.Join("march.xlsx", options);
merger.Save("q1.xlsx");
}
Как получить обновление
NuGet
- Пакет: GroupDocs.Merger 26.9.0
- Команда установки:
dotnet add package GroupDocs.Merger --version 26.9.0