2017-08-05 177 views
0

当前使用模板excel表添加数据,要求也是添加新表,所以需要添加新的表单与相同的模板。PHPExcel:如何使用模板创建新的工作表?

我与新tamplate开始:

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

现在,我必须建立在不克隆第一片相同tamplate同一个文件的新表,因为需要加载新的模板没有数据。

回答

2

你不只是想创建一个新的工作表,要在表与所有现有styleing

因此,创建现有薄片的克隆复制,给它一个新的标题(因为工作表标题必须是唯一的),并将该克隆附加到工作簿。

$newSheet = clone $objPHPExcel->getActiveSheet(); 
$newSheet->setTitle('Worksheet 2'); 
$objPHPExcel->addSheet($newSheet); 
+0

我不应该从活动工作表进行克隆,因为它会从所有输入的数据中进行复制。我需要一个新的模板加载。但条件是填充第一张纸后。 – 151291

+0

是的,得到了​​答案,并编辑你的答案。 – 151291

0

您修改了问题,因为我发布了您的原始问题的答案。

如果您需要从你已经装载原始模板并用数据填充它的模板来创建一个新的工作,那么你就需要重新加载模板作为一个新的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()方法可以正确复制该信息

+0

希望,我的标题清楚地表明,我需要新模板而不是填充数据的克隆。我只是在底部添加了解释。我在问题中添加了新的东西。 – 151291

+0

模板通常没有数据;一旦将数据添加到模板中,它就不再是模板 –