我正在使用 PHPExcel 类,我正在加载模板电子表格,然后修改数据等等。
根据我动态传递脚本的内容,模板中的某些图像应该被删除,某些图形(图表)应该被删除。
我已经使用getChartCollection()
和getDrawingCollection()
来获取所有内容,但我还没有找到修改集合的方法,以便我可以从加载的模板中删除图表和/或图像。
谢谢你的帮助。杰森·K。
更新 - 感谢下面的 Mark Baker 提供的信息。我编写了以下代码,需要在 1.7.9 发布之前添加到工作表类。我的代码如下。
/**
* Remove drawing from collection
*
* @return PHPExcel_Worksheet_BaseDrawing[]
*/
public function removeImageByIDs($IDs)
{
if(!is_array($IDs)) $IDs = array($IDs);
$drawing_collection = $this->_drawingCollection;
$drawing_collection_copy = $drawing_collection->getArrayCopy();
foreach($IDs as $ID){
unset($drawing_collection_copy[$ID]);
}
$drawing_collection_copy = array_values($drawing_collection_copy);
$drawing_collection->exchangeArray($drawing_collection_copy);
$this->_drawingCollection = $drawing_collection;
unset($drawing_collection_copy);
unset($drawing_collection);
return $this->_drawingCollection;
}
/**
* Remove chart from collection
*
* @return PHPExcel_Worksheet_BaseDrawing[]
*/
public function removeChartByIDs($IDs)
{
if(!is_array($IDs)) $IDs = array($IDs);
$chart_collection = $this->_chartCollection;
$chart_collection_copy = $chart_collection->getArrayCopy();
foreach($IDs as $ID){
unset($chart_collection_copy[$ID]);
}
$chart_collection_copy = array_values($chart_collection_copy);
$chart_collection->exchangeArray($chart_collection_copy);
$this->_chartCollection = $chart_collection;
unset($chart_collection_copy);
unset($chart_collection);
return $this->_chartCollection;
}
享受。杰森·K。