PHPExcel - 为什么没有cell-> setStyle()方法?

时间:2014-11-26 10:12:06

标签: php excel-2007 phpexcel

我注意到PHPExcel的开发人员阅读了这个论坛,因此我将问题格式化为对他的直接问题。

我试图从模板excel文档中获取单元格的完整样式并将其复制到新文档。

据我所见,有一个Cell-> getStyle()方法,它返回一个样式对象。但是没有办法将此样式对象应用于另一个单元格。

要应用样式,必须使用不同的函数,Cell-> getStyle(' A1') - > applyFromArray($ styleArray)。此函数采用不同的格式输入 - 样式数组。并且没有办法从样式对象转换为样式数组。这是为什么?为什么这里没有方法cell-> setStyle()?

我还注意到还有另一种方法可以帮助我,Worksheet-> duplicateStyle():

$targetWorksheet->duplicateStyle(
    $sourceWorksheet->getStyle($sourceCellCoordinate),
    $targetCellCoordinate
);

但是,当使用此方法复制TemplateA1-> TargetA1,然后是TemplateB2-> TargetB2时,我复制第二个单元格的那一刻,第一个单元格(TargetA1)被重新设置为具有第二个样式( TargetB2)。所以这两者都不起作用。

我投入了大约一个小时来研究这个,我的下一步可能是实现一个样式对象 - >风格阵列转换器。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:1)

这个外部讨论已经回答了这个问题: https://phpexcel.codeplex.com/discussions/286662

工作表 - > duplicateStyle()确实不能跨文件工作。但有一种解决方法:使用addExternalSheet()将源表暂时添加到目标文档中作为新工作表,复制格式,然后再次删除临时工作表。

我仍然没有找到任何答案为什么没有cell-> setStyle()方法。