2017-05-24 109 views
0

我试图从样式文件中的一系列单元格中复制样式,并将其粘贴到另一个文件中另一个单元格区域,然后保存结果文件。在完全实现它之前,我对Excel文件的一小部分进行了实验,但是我发现了一个奇怪的结果。PHPExcel重复样式只能复制第一个单元格,即使给出单元格范围

这里是我的代码片段...

include "../class/PHPExcel.php"; 
include "../class/PHPExcel/IOFactory.php"; 
include "../class/PHPExcel/Cell.php"; 

$reader = PHPExcel_IOFactory::createReader('Excel2007'); 
$frTemplate = $reader->load("document/Template/FR-001 Template.xlsx"); 
$frTemplate->setActiveSheetIndex(0); 
$frTemplate->getActiveSheet()->setCellValueExplicitByColumnAndRow(3, 6, $year); 

//copy style 
$cellStyle = $frTemplate->getActiveSheet()->getStyle('E47:E49'); 
$frTemplate->getActiveSheet()->duplicateStyle($cellStyle, 'E52:E54'); 

//copy value 
$cellValues = $frTemplate->getActiveSheet()->rangeToArray('E47:E49'); 
$frTemplate->getActiveSheet()->fromArray($cellValues, null,'E52'); 

$writer = PHPExcel_IOFactory::createWriter($frTemplate, "Excel2007"); 
$writer->save("document/Template/FR-001 2017.xlsx"); 

echo "Done"; 

这里是复制Excel文件的图像...

Copied File-Case 1

这里是目标文件的图像。 ..

Result-Case 1

我“M尝试与另一数据应用的代码,我发现, -

  • ‘合并细胞’样式不能被复制
  • 当细胞的范围被复制,复制的唯一风格是所述第一小区(左上)

可悲的是,我的名声仍然非常低,我不能发表上述情况的证据(这是我在堆栈溢出的第一个问题!)

所以,你可以告诉我什么我的代码有问题吗?提前致谢。

+0

如果你想在一个问题的主体中包含一个图像,而不是一个文件的链接,那么用'![] [1]'替换'[image description] [1]'。用任何号码替换该图像的'1'。此外,在这种情况下图像描述不显示在任何地方,但仍然是必需的,因此是一组空括号。 – toonice

+0

@toonice Aaarrggh,我不能在问题的主体中发布图片,我的声望仍然太低。无论如何,谢谢 –

回答

0

这是正确的:

"Merge cell"不是风格的方面;它是工作表的structure的一部分,所以它不能被duplicateStyle“复制”。如果要合并单元格,则需要为要设置的每个合并范围使用mergeCells()方法。

duplicateStyle()方法将样式复制到一系列单元格;它不会将多个样式复制到新范围。 getStyle()方法允许范围用于设置该范围内所有单元格的样式,但仅返回该范围内第一个单元格的样式。您需要将每种不同的样式复制到自己的范围内。

+0

Woow,感谢您的澄清!我确信我的代码有问题。 –

相关问题