PHPExcel: как создать новый лист с шаблоном?

В настоящее время для добавления данных используется лист шаблона Excel, требуется также добавить новый лист, поэтому необходимо добавить новый лист с тем же шаблоном.

Мой начинается с нового шаблона:

$filePath = public_path('Template.xls');
$objPHPExcel = PHPExcel_IOFactory::load($filePath);

Теперь мне нужно создать новый лист в том же файле с тем же шаблоном без клонирования первого листа, потому что нужно загрузить новый шаблон без данных.


person 151291    schedule 05.08.2017    source источник


Ответы (2)


Вы не просто хотите создать новый лист, вы хотите скопировать лист со всеми его существующими стилями

Поэтому создайте клон существующего листа, дайте ему новый заголовок (поскольку заголовки листов должны быть уникальными) и прикрепите этот клон к книге.

$newSheet = clone $objPHPExcel->getActiveSheet();
$newSheet->setTitle('Worksheet 2');
$objPHPExcel->addSheet($newSheet);
person Mark Baker    schedule 05.08.2017
comment
Я не должен клонировать с активного листа, потому что он копирует все введенные данные. Мне нужно загрузить новый шаблон. но условие после заполнения первого листа. - person 151291; 05.08.2017

Вы изменили вопрос, так как я опубликовал ответ на ваш исходный вопрос.

Если вам нужно создать новый рабочий лист из шаблона после того, что вы уже загрузили исходный шаблон и заполнили его данными, вам потребуется перезагрузить шаблон как новый объект PHPExcel и вставьте рабочий лист из него в исходную книгу:

$filePath = public_path('Template.xls');
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
// fill with data
$template = PHPExcel_IOFactory::load($filePath);
$newSheet = clone $template->getActiveSheet();
$objPHPExcel->addExternalSheet($newSheet);

метод addExternalSheet() гарантирует, что все стили и структура (объединенные ячейки) будут аккуратно скопированы вместе с рабочим листом при его добавлении. Простое использование метода addSheet() не гарантирует правильного копирования этой информации.

person Mark Baker    schedule 05.08.2017
comment
Надеюсь, мой заголовок ясно показывает, что мне нужен новый шаблон, а не клон заполненных данных. я просто добавил для объяснения внизу. ничего нового я не добавил в свой вопрос. - person 151291; 07.08.2017
comment
Ну шаблон вообще без данных; как только вы добавили данные в шаблон, он перестает быть шаблоном - person Mark Baker; 07.08.2017