Объединение нескольких файлов в один объект электронной таблицы
Хотя вы можете ограничить количество рабочих листов, которые читаются из
файл книги, используя метод setLoadSheetsOnly()
, некоторые читатели также
позволяют комбинировать несколько отдельных «листов» из разных файлов
в один Spreadsheet
объект, где каждый отдельный файл является
один лист в этой книге. Для каждого файла, который вы читаете, вы
необходимо указать, какой индекс рабочего листа должен быть загружен в
setSheetIndex()
метод $reader
, затем используйте
loadIntoExisting()
метод, а не load()
метод для фактического чтения
файл в эту таблицу.
Пример:
$inputFileType = 'Csv';
$inputFileNames = [
'./sampleData/example1.csv',
'./sampleData/example2.csv'
'./sampleData/example3.csv'
];
/** Create a new Reader of the type defined in $inputFileType **/
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
/** Extract the first named file from the array list **/
$inputFileName = array_shift($inputFileNames);
/** Load the initial file to the first worksheet in a `Spreadsheet` Object **/
$spreadsheet = $reader->load($inputFileName);
/** Set the worksheet title (to the filename that we've loaded) **/
$spreadsheet->getActiveSheet()
->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
/** Loop through all the remaining files in the list **/
foreach($inputFileNames as $sheet => $inputFileName) {
/** Increment the worksheet index pointer for the Reader **/
$reader->setSheetIndex($sheet+1);
/** Load the current file into a new worksheet in Spreadsheet **/
$reader->loadIntoExisting($inputFileName,$spreadsheet);
/** Set the worksheet title (to the filename that we've loaded) **/
$spreadsheet->getActiveSheet()
->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME));
}
Обратите внимание, что использование одного и того же индекса листа для нескольких листов не добавит файлы на один лист, но перезапишет результаты предыдущей загрузки. Вы не можете загрузить несколько файлов CSV в один лист.
https://phpspreadsheet.readthedocs.io/en/develop/topics/reading-files/#combining-multiple-files-into-a-single-spreadsheet-object