目前使用模板excel表来添加数据,要求也是添加新的表,因此需要添加具有相同模板的新表。
我从新的tamplate开始:
$filePath = public_path('Template.xls');
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
现在,我必须在相同的文件中创建新的工作表,而不是克隆第一个工作表,因为需要加载没有数据的新模板。
发布于 2017-08-05 13:41:45
您不是简单地想要创建一个新的工作表,而是要复制一个具有其所有现有样式的工作表
因此,创建现有工作表的克隆,为其指定一个新标题(因为工作表标题必须是唯一的),并将该克隆附加到工作簿。
$newSheet = clone $objPHPExcel->getActiveSheet();
$newSheet->setTitle('Worksheet 2');
$objPHPExcel->addSheet($newSheet);
发布于 2017-08-05 19:10:33
自从我发布了您原始问题的答案后,您已经修改了问题。
如果您已经加载了原始模板并在其中填充了数据,在之后需要从模板创建新的工作表,则需要将模板作为新的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()
方法并不能保证正确地复制该信息
https://stackoverflow.com/questions/45522447
复制相似问题