加载模板时,PHPExcel会删除图表样式

时间:2014-08-08 03:41:35

标签: php charts phpexcel

我正在使用PHPExcel读取和写入Excel的值。我有一个模板,上面有图形和样式。

问题在于: 在Excel工作表上添加了一些值后,图表的样式已被删除,并显示默认样式。

我正在使用此代码阅读:

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
//  Tell the reader to include charts when it loads a file
$objReader->setIncludeCharts(TRUE);
//  Load the file
$objPHPExcel = $objReader->load("rcca.xlsx");

这就是写

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->setIncludeCharts(TRUE);
$objWriter->save('rcca.xlsx');

我错过了什么吗?

请查看之前和之后的图表样式的屏幕截图:

2 个答案:

答案 0 :(得分:4)

使用PHPExcel的图表存在同样的问题  (我的主要问题是改变图表栏的颜色)

首先,如果有人不知道或忘记xlsx文件是zip archs

所以主要问题是PHPExcel在保存xlsx文件时会添加默认主题文件xl / theme / theme1.xml,即使你在$ objReader->加载文件中更改它也会将其覆盖为默认值$ objWriter->保存。

theme1.xml处的<a:accent1>图表中的颜色(... 2,3,4,5,6) 所以我把theme1.xml更改为我需要的颜色,保存并使用The ZipArchive class覆盖之后 $ objWriter-&gt;使用简单代码保存

$zip = new ZipArchive;
if ($zip->open('filename.xlsx') === TRUE) {
    $zip->addFile('mytheme1.xml', 'xl/theme/theme1.xml');
    $zip->close();
    echo 'ok';
} else {
    echo 'err';
}

我希望它会帮助某人

答案 1 :(得分:1)

此时,图表样式似乎需要进行硬编码。

在另一个帖子中,有人解释了如何添加一些样式PHPExcel graph design (border, graph color, graph inner position)