使用 PHP 从 Excel 文件 (xlsx) 中提取图像

2024-03-30

如何使用PHPExcel从excel文件中读取图像并将图像保存在服务器中并显示它们?该文件的扩展名是.xlsx。

My code:

$objPHPExcel = PHPExcel_IOFactory::load($path);

foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) {
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
        ob_start();
        call_user_func(
            $drawing->getRenderingFunction(),
            $drawing->getImageResource()
        );
        $imageContents = ob_get_contents();

        ob_end_clean();
    }

}

Thanks!!


$objPHPExcel->getActiveSheet()->getDrawingCollection()

将返回活动工作表中所有图像对象的 ArrayObject。

这些对象将是 PHPExcel_Worksheet_Drawing 或 PHPExcel_Worksheet_MemoryDrawing 对象:您可以使用 [is_a()][1] 来识别哪个对象。然后,您可以使用适合该类的方法(如 API 中所述)从文件(对于 PHPExcel_Worksheet_Drawing 对象)或直接从 PHPExcel_Worksheet_MemoryDrawing 对象本身读取图像数据。 getName() 和 getDescription() 方法可用于检索图像对象的相关值。

请注意,也可以将图像对象与打印标题关联:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages()

可用于从页眉/页脚检索图像。这是 PHPExcel_Worksheet_HeaderFooterDrawing 对象的数组。所有 PHPExcel_Worksheet_Drawing 方法都可用于从这些对象中提取图像文件。

EDIT

勺子喂时间。

这将从当前活动工作表中提取所有图像,并将它们写入服务器上的文件。

$objPHPExcel = PHPExcel_IOFactory::load($path);

$i = 0;
foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) {
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
        ob_start();
        call_user_func(
            $drawing->getRenderingFunction(),
            $drawing->getImageResource()
        );
        $imageContents = ob_get_contents();
        ob_end_clean();
        switch ($drawing->getMimeType()) {
            case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG :
                    $extension = 'png'; break;
            case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF:
                    $extension = 'gif'; break;
            case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG :
                    $extension = 'jpg'; break;
        }
    } else {
        $zipReader = fopen($drawing->getPath(),'r');
        $imageContents = '';
        while (!feof($zipReader)) {
            $imageContents .= fread($zipReader,1024);
        }
        fclose($zipReader);
        $extension = $drawing->getExtension();
    }
    $myFileName = '00_Image_'.++$i.'.'.$extension;
    file_put_contents($myFileName,$imageContents);
}

文件已命名

00_Image_n.extension

其中 n 是从 1 开始的数字,extension 是图像类型的适当扩展名(png、jpg、gif 等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PHP 从 Excel 文件 (xlsx) 中提取图像 的相关文章

  • 设置大型电子邮件通知系统有哪些方法?

    我的公司有一个用 PHP 构建的网站 我们使用内置的 PHP 电子邮件功能每天向订阅者发送数千封电子邮件 这是一个糟糕的主意 它堵塞了我们的服务器 并且需要几个小时才能完成整个批次 现在我已经研究过像 MailChimp 这样的群发邮件服务
  • if/else 简写来定义变量

    我很难理解 if else 的 php 简写是如何描述的here https stackoverflow com questions 20233207 php if shorthand and echo in one line possib
  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • Ajax 没有将我重定向到下一页

    我正在尝试将单击的图像的 ID 传递到下一页 当我开发代码时 它没有将我重定向到下一页 当我单击 F12 并检查网络中的 POST 时 它显示变量已正确传递到下一页 如附图所示 但它没有将我重定向到下一页 所以现在我知道变量在下一页中正确传
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 尝试使用 php 发送 POST 请求,无论我做什么,我都会收到“HTTP ERROR 500”

    为了发出 HTTP 请求 有人建议我尝试使用 PHP 并给了我一段代码 url https example com dashboard api data array to gt PHONE NUMBER from gt SENDER ID
  • get url 重定向时 File_get_contents() 不起作用

    我正在使用的功能是 function http post url data data url http build query data data len strlen data url date default timezone set
  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 如何将我的 init 函数中的代码集中到所有控制器中?

    public function init this gt view gt user Zend Auth getInstance gt getIdentity this gt view gt siteName Zend Registry ge
  • WordPress 包含 SVG 文件错误

    我使用 PHP 和 WordPress 在本地主机上 我可以毫无问题地包含 SVG 文件 但在实时服务器上 我尝试包含一个 SVG 文件以便能够使用 CSS 对其进行样式设置 我收到此错误消息 Parse error syntax erro
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • 重写 URL,将 ID 替换为查询字符串中的标题

    我对 mod rewrite 很陌生 但我做了一些搜索 但找不到这个问题的答案 我有一个网站 它只有一个 PHP 页面 根据查询字符串中传递给它的 ID 提供数十页内容 我想重写 URL 以便此 ID消失并替换为从数据库中提取的页面标题 例
  • PHP 扩展开发入门 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 请推荐有关 PHP 低 级 modules 编程接口的帮助文章或教程 搜索我的书签 我发现的唯一链接是
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • PHP 中的引用

    我正在编写一个自定义博客引擎 并且希望拥有类似于 Wordpress 的引用 我可以查看 WordPress 源代码 但我真的更喜欢某种教程 但到目前为止我还没有找到 有没有关于在 PHP5 中实现 trackbacks 或 pingbac
  • 如何在 phalcon 框架中同时连接多个数据库在模型类中同时使用两个而不仅仅是一个

    在我的代码中我有两个数据库ABC and XYZ 我想在同一模型中使用两个数据库 而不是 phalcon 中的解决方案是什么 如何为此实现多个数据库连接 one
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 从所有会话中注销

    我有一个注销选项 这是我的代码 session start session destroy setcookie key time 60 60 24 setcookie username time 60 60 24 我想添加另一个选项来注销所
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for

随机推荐

  • 如何使浏览器缓存具有不同 aws s3 预签名 url 的相同图像?

    我生成了与此类似的 url 以便我的用户从我的 aws s3 存储桶检索图像文件 有时 用户可能会刷新页面 并且同一资源的 url 会获得一组新值Expires and Signature 浏览器会将这两个 url 视为不同的两个对象 并会
  • 将遵循方向的点集分组在一起的算法

    注意 我将这个问题放在 MATLAB 和 Python 标签中 因为我最精通这些语言 但是 我欢迎任何语言的解决方案 问题序言 我用鱼眼镜头拍摄了一张图像 该图像由带有一堆方形物体的图案组成 我想要对该图像执行的操作是检测每个正方形的质心
  • Android Activity 出现泄漏窗口

    我想做的是从服务器获取文件 相同的代码正在使用 sdcard 运行 f9 但是当我从整个线程获取文件时 我在 logcat 中收到以下错误 我的代码如下 public class Map extends Activity private G
  • 将 SQL 文件导入到 Rails 4 ActiveRecord 数据库?

    我在这里查看了其他几个问题 它们有点相似 但不完全是我想要的 我想做的是导入 转换 一个 sql 文件 其中包含 8 个表 每个表包含大约 24 列 这个文件实际上是相当扁平的文件 看起来好像之前工作的唯一查询必须与表之间关联共享的 id
  • 角度观察者和事件侦听器以什么顺序执行?

    如果先更改作用域属性 然后再广播事件 那么相应的观察者回调和事件侦听器回调是否总是以相同的顺序执行 例如 scope foo 3 scope broadcast bar 和其他地方 scope watch foo function fn1
  • 使用 Typescript 请求 DeviceMotionEvent 权限

    实现陀螺仪权限请求 但我在 requestPermission 上收到打字稿错误 My code if typeof DeviceMotionEvent undefined typeof DeviceMotionEvent requestP
  • 如何在排除一种可能性的情况下随机选择列表中的一项?

    除了列表中的给定项目之外 从列表中随机选择项目的最简单方法是什么 例子 list 2 4 5 7 9 34 54 如何随机选择除 7 之外的任何数字 可能有两种主要策略 从列表中删除异常 并从中采样 import random def ch
  • 使用指向基类的指针访问受保护的继承成员

    有人可以解释为什么这段代码不起作用 class A public A void virtual A void protected A parent class B public A public B void parent new B B
  • 如何将 boost::any 打印到流?

    我有一张地图std map
  • 自动选择按钮(如何关闭此功能?)

    我有 winform 按钮 当您加载表单时 会选择某个按钮 我所说的选择的意思是 如果按下 输入 则按下该按钮 我怎样才能改变我的按钮 让他们不再这样做 Tab 键顺序按照您在表单上添加控件的顺序设置 如果您的第一个可以按下 选择 编辑的控
  • 如何将字符串绘制到图像中?

    我正在尝试使用 image picker 库从相机获取图片 然后我想添加图片拍摄日期和时间的信息 那可能吗 谢谢 您可以使用将字符串绘制到图像中图2 1 12 https pub dev packages image 您必须在 dart 文
  • 在Webstorm中删除右侧的一个字符

    我忘记了这个按键绑定 和emacs是一样的Ctrl D我尝试过谷歌搜索 删除右侧一个字符 向前删除 删除下一个字符 等内容 这里有phpstorm 中的绑定 https www jetbrains com phpstorm webhelp
  • 如何访问 Ruby 中的基本命名空间?

    我正在文件模块存在的命名空间中编写代码 在另一个模块内 我需要访问 ruby File 类 在 php 中可以这样完成 File 如何在红宝石中做到这一点 File 前缀为 访问命名空间树的 根
  • 为什么 Javascript 不包含保留关键字,例如“Object”、“Array”、“Function”、“Number”...?

    一些特殊的词 例如Object Array Function Method Numberetc 不属于 Javascript 中的关键字 JavaScript 中的保留关键字 https stackoverflow com question
  • AWS IAM 策略允许用户创建具有特定策略/角色的 IAM 用户

    我想创建一个策略 允许创建具有有限权限或与创建它们的用户相同权限的 IAM 用户 基本上 我想允许一个用户创建另一个用户 但也想准确指定一个用户可以向另一个用户提供哪些策略 例如 我创建一个新用户 用户A 用户 A 仅有权创建具有 同样 有
  • 在上传到远程网站期间缩小/调整视频大小

    我有一个用 Ruby on Rails 编写的 Web 应用程序 它使用表单将视频从用户上传到服务器 我实际上使用直接上传到 s3 的 jquery 上传器 但我认为这不相关 为了减少视频的上传时间 我想缩小它的大小 例如如果视频大小为 1
  • 如何在aspell字典中使用Unicode?

    我正在尝试使用aspell检查我的文本中的拼写 我有一本自定义词典 但有例外 它们都是 ASCII 格式的 但有一个单词是 Unicode 格式的 foo en pws personal ws 1 1 en 554 Foo bar B rb
  • MySQL 拆分和连接值

    我有一个表 mapping 有 2 列 类似于下面 id values 1 1 2 2 1 2 3 3 1 1 4 1 1 2 另一个表 map 与此类似 sno values 1 Test 2 Hello 3 Hai 我的预期输出是 id
  • 如何更改SQL Server中主键的列长度?

    我知道如何更改列的长度 但我的 SQL 语句失败 因为我尝试更改的列是 PK 因此出现以下错误 消息 5074 16 级 状态 1 第 1 行对象 PK TableName 依赖于列 PersonID 人物ID PK 我读了更改sql se
  • 使用 PHP 从 Excel 文件 (xlsx) 中提取图像

    如何使用PHPExcel从excel文件中读取图像并将图像保存在服务器中并显示它们 该文件的扩展名是 xlsx My code objPHPExcel PHPExcel IOFactory load path foreach objPHPE