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

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

1. Установите PhpSpreadsheet в ваш проект, используя Composer. Выполните следующую команду в командной строке:

composer require phpoffice/phpspreadsheet

2. Подключите классы, необходимые для работы с PhpSpreadsheet, в вашем скрипте:

use PhpOfficePhpSpreadsheetIOFactory;
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetWriterXlsx;

3. Создайте новый объект класса Spreadsheet:

$spreadsheet = new Spreadsheet();

4. Прочитайте содержимое каждого файла 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); // Удалите первый лист по умолчанию, если не нужен

5. Создайте новый объект класса Xlsx, чтобы получить файл объединения:

$writer = new Xlsx($spreadsheet);
$writer->save('merged_file.xlsx'); // Укажите имя и путь к файлу объединения

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

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