2
我正在使用PHPExcel類,我正在加載模板speadsheets,然後修改數據等等。如何從excel文件中加載到PHPExcel中刪除/刪除圖形(圖表),圖片(圖片)?
根據我動態地傳遞我的腳本,應該刪除模板中的某些圖像,並刪除某些圖形(圖表)。
我已經使用了getChartCollection()
和getDrawingCollection()
得到的一切,但我還沒有想出一個辦法修改的集合,這樣我可以從一個 裝模板中刪除圖表,和/或圖像。
感謝您的任何幫助。 Jason 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;
}
享受。 Jason K.
完美和感謝您的快速回答。這是沒有人要求的。是否有可能將此添加到下一個版本中,以便我/他人不必擔心每次更新這個偉大的類時都要閱讀該功能。 – 2013-02-12 21:04:58
這很容易做到,因此我將爲1.7.9版本添加它:使用序列ID號作爲參數的removeChartByID和removeImageByID – 2013-02-12 21:46:01
Mark Baker聽起來很完美,並且非常感謝您的幫助。上面的代碼是我的補丁,直到v1.7.9發佈。它需要索引數組以及單個索引。再次感謝。 – 2013-02-14 18:40:25