我注意到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)。所以这两者都不起作用。
我投入了大约一个小时来研究这个,我的下一步可能是实现一个样式对象 - >风格阵列转换器。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:1)
这个外部讨论已经回答了这个问题: https://phpexcel.codeplex.com/discussions/286662
工作表 - > duplicateStyle()确实不能跨文件工作。但有一种解决方法:使用addExternalSheet()将源表暂时添加到目标文档中作为新工作表,复制格式,然后再次删除临时工作表。
我仍然没有找到任何答案为什么没有cell-> setStyle()方法。