Объедините два или более файла xls в виде таблиц PHPExcel

Я искал всюду о том, как это сделать с двумя существующими файлами, похоже, что вся документация связана с созданием новых файлов. Я хотел бы взять один из файлов и добавить второй файл к нему в качестве нового рабочего листа, а затем сохранить его на сервере. Я пытался безрезультатно:

$file="test.xls"; $file2="test2.xls"; $outputFile = "final.xls"; $phpExcel = new PHPExcel($file); $phpExcel->getActiveSheet(); $phpExcel->setActiveSheetIndex(0); $phpExcel->addSheet($file2); header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=$outputFile"); header("Cache-Control: max-age=0"); $objWriter = PHPExcel_IOFactory::createWriter($phpExcel, "Excel5"); file_put_contents($outputFile, $objWriter); 

Любая помощь будет принята с благодарностью. Очень новый для PHP.

Кто-нибудь никогда не читал документацию в эти дни? В папке под названием /Documentation о чтении файлов в объекты PHPExcel User Documentation - Reading Spreadsheet Files , который называется PHPExcel User Documentation - Reading Spreadsheet Files ) вместе с десятками примеров (папка /Documentation/Examples/Reader – хорошее место для поиска), и ни один из них не использует new PHPExcel($file) . Ни один из примеров или каких-либо документов не говорит, что для сохранения файла file_put_contents ().

 $file1="test.xls"; $file2="test2.xls"; $outputFile = "final.xls"; // Files are loaded to PHPExcel using the IOFactory load() method $objPHPExcel1 = PHPExcel_IOFactory::load($file1); $objPHPExcel2 = PHPExcel_IOFactory::load($file2); // Copy worksheets from $objPHPExcel2 to $objPHPExcel1 foreach($objPHPExcel2->getAllSheets() as $sheet) { $objPHPExcel1->addExternalSheet($sheet) } // Save $objPHPExcel1 to browser as an .xls file $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, "Excel5"); header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=$outputFile"); header("Cache-Control: max-age=0"); $objWriter->save('php://output'); 
  // update from office site $filenames = array('doc1.xlsx', 'doc2.xlsx'); $bigExcel = new PHPExcel(); $bigExcel->removeSheetByIndex(0); $reader = PHPExcel_IOFactory::createReader($input_file_type); foreach ($filenames as $filename) { $excel = $reader->load($filename); foreach ($excel->getAllSheets() as $sheet) { $bigExcel->addExternalSheet($sheet); } foreach ($excel->getNamedRanges() as $namedRange) { $bigExcel->addNamedRange($namedRange); } } $writer = PHPExcel_IOFactory::createWriter($bigExcel, 'Excel5'); $file_creation_date = date("Ymd"); // name of file, which needs to be attached during email sending $saving_name = "Report_Name" . $file_creation_date . '.xls'; // save file at some random location $writer->save($file_path_location . $saving_name); // More Detail : with different object: Merge multiple xls file into single one is explained here: I'm going to describe a bit different: 

http://rosevinod.wordpress.com/2014/03/15/combine-two-or-more-xls-files-as-worksheets-phpexcel/

 // Combine all .csv files into one .xls file, $cache_dir = "/home/user_name/public_html/"; $book1 = $cache_dir . "book1.csv"; $book2 = $cache_dir . "book2.csv"; $outputFile = $cache_dir . "combined.xls"; $inputFileType = 'CSV'; $inputFileNames = array($book1,$book2); $objReader = new PHPExcel_Reader_CSV(); /** Extract the first named file from the array list **/ $inputFileName = array_shift($inputFileNames); /** Load the initial file to the first worksheet in a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->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 **/ $objReader->setSheetIndex($sheet+1); /** Load the current file into a new worksheet in PHPExcel **/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->getActiveSheet()->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); } $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save( $outputFile ); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); echo "DONE"; с // Combine all .csv files into one .xls file, $cache_dir = "/home/user_name/public_html/"; $book1 = $cache_dir . "book1.csv"; $book2 = $cache_dir . "book2.csv"; $outputFile = $cache_dir . "combined.xls"; $inputFileType = 'CSV'; $inputFileNames = array($book1,$book2); $objReader = new PHPExcel_Reader_CSV(); /** Extract the first named file from the array list **/ $inputFileName = array_shift($inputFileNames); /** Load the initial file to the first worksheet in a PHPExcel Object **/ $objPHPExcel = $objReader->load($inputFileName); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->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 **/ $objReader->setSheetIndex($sheet+1); /** Load the current file into a new worksheet in PHPExcel **/ $objReader->loadIntoExisting($inputFileName,$objPHPExcel); /** Set the worksheet title (to the filename that we've loaded) **/ $objPHPExcel->getActiveSheet()->setTitle(pathinfo($inputFileName,PATHINFO_BASENAME)); } $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); $objWriter->save( $outputFile ); $objPHPExcel->disconnectWorksheets(); unset($objPHPExcel); echo "DONE";