目前使用模板excel表格添加数据,要求也是添加新表格,因此需要添加具有相同模板的新表格。
我从新的模板开始:
$filePath = public_path('Template.xls');
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
现在,我必须在没有克隆第一张表的情况下使用相同的模板在同一个文件中创建新表,因为需要加载没有数据的新模板。
您不仅想创建一个新工作表,还想复制一个具有所有现有样式的工作表
因此,创建现有工作表的克隆,给它一个新标题(因为工作表标题必须是唯一的),并将该克隆附加到工作簿。
$newSheet = clone $objPHPExcel->getActiveSheet();
$newSheet->setTitle('Worksheet 2');
$objPHPExcel->addSheet($newSheet);
自从我发布了您原始问题的答案以来,您已经修改了问题。
如果您在加载原始模板并用数据填充后需要从模板创建新工作表,那么您需要将模板重新加载为新的 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()
方法不能保证正确复制该信息