目前使用模板Excel工作表添加数据,要求也是添加新工作表,因此需要添加具有相同模板的新工作表。
我从新模板开始:
$filePath = public_path('Template.xls');
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
现在,我必须使用相同的模板在同一个文件中创建新工作表而不使用克隆第一张工作表,因为需要加载没有数据的新模板。
答案 0 :(得分:2)
您不只是想创建新工作表,而是希望复制包含所有现有样式的工作表
因此,创建现有工作表的克隆,为其指定一个新标题(因为工作表标题必须是唯一的),并将该克隆附加到工作簿。
$newSheet = clone $objPHPExcel->getActiveSheet();
$newSheet->setTitle('Worksheet 2');
$objPHPExcel->addSheet($newSheet);
答案 1 :(得分:0)
自从我发布原始问题的答案后,您已修改了该问题。
如果您需要在 后面的 模板中创建新的工作表,您已经加载了原始模板并用数据填充了该模板,那么您可以使用 我需要将模板重新加载为一个新的PHPExcel对象,并将其中的工作表注入到原始工作簿中:
log.info(obj1.toString());
$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()
方法并不能保证正确复制该信息