Как объединить файлы xlsx/xls в один через phpSpreadSheet?

Для объединения файлов XLSX/XLS в один файл с использованием библиотеки PhpSpreadsheet вам потребуется выполнить следующие шаги:

  1. Установите PhpSpreadsheet в ваш проект, используя Composer. Выполните следующую команду в командной строке:
composer require phpoffice/phpspreadsheet
  1. Подключите классы, необходимые для работы с PhpSpreadsheet, в вашем скрипте:
use PhpOfficePhpSpreadsheetIOFactory;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;
  1. Создайте новый объект класса Spreadsheet:
$spreadsheet = new Spreadsheet();
  1. Прочитайте содержимое каждого файла XLSX/XLS, который вы хотите объединить, и добавьте его в созданный объект Spreadsheet:
$filenames = ['file1.xlsx', 'file2.xlsx']; // Замените на ваши файлы
foreach ($filenames as $filename) {
    $spreadsheet_to_merge = IOFactory::load($filename);
    $sheet_to_merge = $spreadsheet_to_merge->getActiveSheet();

    $spreadsheet->addSheet($sheet_to_merge);
}

$spreadsheet->removeSheetByIndex(0); // Удалите первый лист по умолчанию, если не нужен
  1. Создайте новый объект класса Xlsx, чтобы получить файл объединения:
$writer = new Xlsx($spreadsheet);
$writer->save('merged_file.xlsx'); // Укажите имя и путь к файлу объединения

Теперь у вас будет файл "merged_file.xlsx", в котором будут объединены все файлы XLSX/XLS, перечисленные в массиве $filenames.

Обратите внимание, что в приведенном выше примере предполагается, что все файлы XLSX/XLS имеют одинаковую структуру (т.е. одинаковые заголовки столбцов).