2013-02-12 79 views
2

我正在使用PHPExcel類,我正在加載模板speadsheets,然後修改數據等等。如何從excel文件中加載到PHPExcel中刪除/刪除圖形(圖表),圖片(圖片)?

根據我動態地傳遞我的腳本,應該刪除模板中的某些圖像,並刪除某些圖形(圖表)。

我已經使用了getChartCollection()getDrawingCollection()得到的一切,但我還沒有想出一個辦法修改的集合,這樣我可以從一個 裝模板中刪除圖表,和/或圖像。

感謝您的任何幫助。 Jason K.

更新 - 感謝來自Mark Ba​​ker的信息。 我寫了下面的代碼,需要添加到工作表類,直到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.

回答

3

信不信由你,這是有史以來第一次有人問過如何從電子表格中刪除圖表或圖像。 PHPExcel實際上並沒有任何方法,但它們很容易讓你添加自己。在這些集合中添加條目的方法在PHPExcel_Worksheet類中;並且由於集合只是一個數組,所以它只是使用unset(),array_splice()或類似的方法來刪除不需要的條目。

+0

完美和感謝您的快速回答。這是沒有人要求的。是否有可能將此添加到下一個版本中,以便我/他人不必擔心每次更新這個偉大的類時都要閱讀該功能。 – 2013-02-12 21:04:58

+1

這很容易做到,因此我將爲1.7.9版本添加它:使用序列ID號作爲參數的removeChartByID和removeImageByID – 2013-02-12 21:46:01

+0

Mark Ba​​ker聽起來很完美,並且非常感謝您的幫助。上面的代碼是我的補丁,直到v1.7.9發佈。它需要索引數組以及單個索引。再次感謝。 – 2013-02-14 18:40:25