目前使用模板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()
方法并不能保证正确复制该信息