Слияние файла Excel в PHP с использованием библиотеки PHPSpreadSheet - PullRequest
0 голосов
/ 12 октября 2018

Я пытался объединить несколько файлов Excel (около 2-10 файлов) с помощью библиотеки phpspreadsheet.Я получил фатальную ошибку: метод __clone вызван необъектным в merge.php в строке 27. Хотя я попытался проверить все.Возможно, из-за формата?Но это установлено в xlsx.И возможно ли объединить файлы xlsx и xls одновременно?Это мой блок кода

<?php

   require 'vendor/autoload.php';

   use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

   $inputFileType = 'Xlsx';
   $inputFileNames = [
     'file1.xlsx',
     'file2.xlsx',
     'file3.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');
   $num = 1;
   foreach ($inputFileNames as $book => $inputFileName) {
      echo ('$inputFileName: ' . $inputFileName) . '</br>';
      $spreadsheet = $reader->load($inputFileName);
      $clonedWorksheet = clone $spreadsheet->getSheetByName('Worksheet'.$num);
      $clonedWorksheet->setTitle('Worksheet'.$num);
      $spreadsheetMain->addExternalSheet($clonedWorksheet);
      $num++;
   }
   $writer = new Xlsx($spreadsheetMain);
   $writer->save('prueba1.xlsx');
?>

Кстати, это ссылка на код и файлы, которые я пытался объединить.

Любая помощь приветствуется.Спасибо

1 Ответ

0 голосов
/ 12 октября 2018

Похоже, вы клонируете электронную таблицу в переменную.Сначала создайте объект электронной таблицы, а затем клонируйте.

/** Create a new Spreadsheet Object **/ $clonedWorksheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();

...