PHP « PHPExcel объединение файлов
Подскажите как то можно при использовании библиотеки PHPExcel объединять файлы взятые по шаблону.
Т.е. есть 2-а файла-шаблона (например заказы.xls и фирмы.xls), далее берётся (например фирмы.xls) и заполняется какими-то данными и потом тоже делается со вторым файлом, а вот после всего этого требуется сделать (отдать в браузер) файл который будет в себе содержать сначала данные фирм и ниже (на том же листе) данные о заказах.
Как то можно взять первый шаблон (фирмы.xls) и вставить всё из него во второй файл (с форматированием ячеек)?
В принципе этого достаточно, просто что-то не найду никак... Можно конечно просто хранить на сервере объединённый файл, но хочется именно та лету производить эти манипуляции. В основном для разных комбинаций объединяемых фалов.
Т.е. есть 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";
в файле документации все хорошо описанно.
Можно сделать, там есть класс 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');
?>
Вроде как-то так. Могут быть ошибки.