PHP « PHPExcel объединение файлов

Подскажите как то можно при использовании библиотеки PHPExcel объединять файлы взятые по шаблону.
Т.е. есть 2-а файла-шаблона (например заказы.xls и фирмы.xls), далее берётся (например фирмы.xls) и заполняется какими-то данными и потом тоже делается со вторым файлом, а вот после всего этого требуется сделать (отдать в браузер) файл который будет в себе содержать сначала данные фирм и ниже (на том же листе) данные о заказах.
Как то можно взять первый шаблон (фирмы.xls) и вставить всё из него во второй файл (с форматированием ячеек)?
В принципе этого достаточно, просто что-то не найду никак... Можно конечно просто хранить на сервере объединённый файл, но хочется именно та лету производить эти манипуляции. В основном для разных комбинаций объединяемых фалов.

1 ответов


Документация PHPExcel
Можно сделать, там есть класс PHPExcel_Reader можно читать файлы и переносить в новый файл.

вот пример чтения из документации.

<?php
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);

$objPHPExcel = $objReader->load("test.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();

echo '<table>' . "\n";
foreach ($objWorksheet->getRowIterator() as $row) {
  echo '<tr>' . "\n";
   
  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(false); // This loops all cells,
                                                     // even if it is not set.
                                                     // By default, only cells
                                                     // that are set will be
                                                     // iterated.
  foreach ($cellIterator as $cell) {
    echo '<td>' . $cell->getValue() . '</td>' . "\n";
  }
 
  echo '</tr>' . "\n";
}
echo '</table>' . "\n";

 

в файле документации все хорошо описанно.



<?
include_once 'PHPExcel/IOFactory.php';
require_once 'PHPExcel.php';
// Берем файл в том числе и стили.
$objPHPExcel = PHPExcel_IOFactory::load("firma.xls");
// Сохраняем как второй лист.
$objPHPExcel->setActiveSheetIndex(1);
$aSheet = $objPHPExcel->getActiveSheet();
include("../libs/PHPExcel/Writer/Excel5.php");
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
// Выводим заголовки.
header('Content-Type: application/vnd.ms-excel');
// Название файла.
header('Content-Disposition: attachment;filename="print.xls"');
header('Cache-Control: max-age=0');
// Отдаем файл.
$objWriter->save('php://output');
?>
 
Вроде как-то так. Могут быть ошибки.