Я хочу объединить 2 или более Excel с PhpSpreadsheet . Я пытаюсь сохранить стили для каждого листа, это мой код:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$inputFileType = 'Xlsx';
$inputFileNames = [
'a.xlsx',
'b.xlsx',
'c.xlsx'
];
$sheetnames = [
'Worksheet',
'Worksheet1',
'Worksheet2'
];
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader($inputFileType);
$reader->setLoadSheetsOnly($sheetnames);
$inputFileName = array_shift($inputFileNames);
$spreadsheetMain = $reader->load($inputFileName);
$spreadsheetMain->getActiveSheet()->setTitle('page0');
$contador = 1;
foreach ($inputFileNames as $book => $inputFileName) {
echo ('$inputFileName: ' . $inputFileName) . '</br>';
$spreadsheet = $reader->load($inputFileName);
$clonedWorksheet = clone $spreadsheet->getActiveSheet()->setTitle($inputFileName[0]);
$clonedWorksheet->setTitle('page' . $contador);
$spreadsheetMain->addSheet($clonedWorksheet);
$contador++;
}
$writer = new Xlsx($spreadsheetMain);
$writer->save('prueba1.xlsx');
чтобы делать то, что я хочу, мне нужно это изменить
$spreadsheetMain->addSheet($clonedWorksheet);
для этого $spreadsheetMain->addExternalSheet($clonedWorksheet);
Но когда я выполняю этот код, я получаю сообщение об ошибке: «Лист не существует»
Я думал, что это еще не реализовано, но здесь на странице документации: https://phpspreadsheet.readthedocs.io/en/develop/topics/worksheets/#copying-worksheets
Здесь вы можете скачать мои экземпляры и код, чтобы попробовать, если хотите:
https://drive.google.com/open?id=1qkI8jdYDuA6e5CW6z3k0r_7j1pTvW_6D