php - 如何从加载到 PHPExcel 的 Excel 文件中删除/删除图表(图表)、图片(图像)?

标签 php phpexcel

我正在使用 PHPExcel 类,我正在加载模板电子表格,然后修改数据等等。

根据我动态传递脚本的内容,应删除模板中的某些图像,并删除某些图形(图表)。

我已经使用 getChartCollection()getDrawingCollection() 来获取所有内容,但我还没有找到修改集合的方法,以便我可以删除图表,和/或来自的图像 已加载模板。

感谢您的帮助。 贾森·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;
}

享受吧。贾森·K.

最佳答案

无论你相信与否,这是第一次有人询问如何从电子表格中删除图表或图像。 PHPExcel 实际上没有任何方法可以实现此目的,但您可以很容易地自行添加。在这些集合中添加条目的方法位于 PHPExcel_Worksheet 类中;由于集合只是一个数组,因此只需使用 unset()、array_splice() 或类似方法来删除不需要的条目。

关于php - 如何从加载到 PHPExcel 的 Excel 文件中删除/删除图表(图表)、图片(图像)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14840859/

相关文章:

php - 如何在页面重新加载时保留 jqGrid 中的页码和排序标准?

php - ALTER TABLE 表 AUTO_INCREMENT = $x

php - 如何在 PHP 的开头截断文件?

php - 如何在phpMyAdmin中添加md5函数?

PHPExcel 数字格式显示不正确

php - 将 Excel 日期序列转换回可读的日期格式

javascript - PHPExcel - 在输出上渲染 HTML 标记

php - 如何在不指定索引号的情况下在 PHP 中构建对象数组?

php - 在制作 PHPExcel Reader 时不能使用标量作为数组

Phpspreadsheet - 时间单元格检索为 float