• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > PHP读取Excel图片对象,并保存替换为相对路径

PHP读取Excel图片对象,并保存替换为相对路径

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了PHP读取Excel,图片对象,相对路径等相关知识,希望对您有所帮助

PHP利用PhpSpreadsheet 和 xlswriter 读取Excel图片对象,保存替换为相对路径

<?php/** * Created by PhpStorm. * User: Administrator * Date: 2021/1/11 0011 * Time: 8:59 */namespace App\Services; use PhpOffice\PhpSpreadsheet\Cell\Coordinate;use PhpOffice\PhpSpreadsheet\Exception;use PhpOffice\PhpSpreadsheet\IOFactory;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;use Vtiful\Kernel\Excel; /** * 读取Excel图片并保存其路径 * Class ExcelImagePathServer * @package App\Services */class ExcelImagePathServer{    /**     * @var string     */    protected $relative_path = '/images';     /**     * @var Spreadsheet     */    protected $spreadsheet;     /**     * @var Excel     */    protected $xls_writer;     /**     * @var Excel     */    protected $sheet_writer;     /**     * @var string     */    protected $image_path;     /**     * ExcelImagePathServer constructor.     * @param string $excel_file     * @throws \PhpOffice\PhpSpreadsheet\Reader\Exception     */    public function __construct($excel_file)    {        $reader = IOFactory::createReader('Xlsx');        $this->spreadsheet = $reader->load($excel_file);         $config = ['path' => dirname($excel_file)];        $this->xls_writer = new Excel($config);         $this->image_path = dirname($excel_file) . $this->relative_path;        if (!is_dir($this->image_path)) {            mkdir($this->image_path, 0755);        }    }     /**     * @throws Exception     */    public function handle()    {        $write_filename = date('YmdHis') . '.xlsx';        $sheetCount = $this->spreadsheet->getSheetCount();        for ($i = 0; $i < $sheetCount; $i++) {            $worksheet = $this->spreadsheet->getSheet($i);            $data = $worksheet->toArray();            $sheetNames = $this->spreadsheet->getSheetNames();            var_dump($sheetCount, $sheetNames);            // 读取并修改            foreach ($worksheet->getDrawingCollection() as $drawing) {                /**@var $drawing Drawing* */                list($startColumn, $startRow) = Coordinate::coordinateFromString($drawing->getCoordinates());                $image_filename = "/{$i}-" . $drawing->getCoordinates();                $image_suffix = $this->saveImage($drawing, $image_filename);                $image_name = ltrim($this->relative_path, '/') . "{$image_filename}.{$image_suffix}";                var_dump($image_name);                $startColumn = $this->ABC2decimal($startColumn);                $data[$startRow - 1][$startColumn] = $image_name;            }             // 写入文件            if ($i == 0) {                $this->sheet_writer = $this->xls_writer->fileName($write_filename, $sheetNames[$i])->data($data);            } else {                // 向文件中追加工作表                $this->sheet_writer->addSheet($sheetNames[$i])->data($data);            }        }        // 最后的最后,输出文件        $filePath = $this->sheet_writer->output();        var_dump($filePath);    }     /**     * 保存图片     *     * @param Drawing $drawing     * @param $image_filename     * @return string     * @throws Exception     */    protected function saveImage(Drawing $drawing, $image_filename)    {        $image_filename .= '.' . $drawing->getExtension();        switch ($drawing->getExtension()) {            case 'jpg':            case 'jpeg':                $source = imagecreatefromjpeg($drawing->getPath());                imagejpeg($source, $this->image_path . $image_filename);                break;            case 'gif':                $source = imagecreatefromgif($drawing->getPath());                imagegif($source, $this->image_path . $image_filename);                break;            case 'png':                $source = imagecreatefrompng($drawing->getPath());                imagepng($source, $this->image_path . $image_filename);                break;            default:                throw new Exception('image format error!');        }        return $drawing->getExtension();    }     /**     * 坐标转换     *     * @param $abc     * @return float|int     */    protected function ABC2decimal($abc)    {        $ten = 0;        $len = strlen($abc);        for ($i = 1; $i <= $len; $i++) {            $char = substr($abc, 0 - $i, 1);//反向获取单个字符            $int = ord($char);            $ten += ($int - 65) * pow(26, $i - 1);        }        return $ten;    }}

以上就是PHP读取Excel图片对象,并保存替换为相对路径的详细内容。更多关注站长图库教程栏目。



分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PHP读取Excel图片对象,并保存替换为相对路径

相关文章

  • 2022-04-29宝塔面板批量设置站点404页面的方法(无需站点单独设置)
  • 2022-04-29Photoshop制作质感金属文字效果
  • 2022-04-29Photoshop制作夹心饼干艺术字效果
  • 2022-04-29php base64如何转换为图片
  • 2022-04-29Photoshop制作时尚绚丽的3D立体字教程
  • 2022-04-29浅谈小程序怎么实现列表滚动上下联动效果
  • 2022-04-29如何解决“您的服务器没有安装这个php扩展”问题
  • 2022-04-29帝国CMS实现tagid伪静态tag的方法
  • 2022-04-29Uniapp发布为H5版本时如何隐藏访问路径的#符号
  • 2022-04-29如何解决php微信输出乱码

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 让padding、border等不占据高宽度的方法
    • Phpcms V9管理后台登陆及会员注册登录模板的修改
    • PhotoShop制作简单的桔子果肉文字效果新手教程
    • WordPress程序打开速度慢的三种解决方法
    • Photoshop打造漂亮的钻石艺术字体排字教程
    • Bootstrap-table表头固定导致错位怎么办?怎么彻底解决?
    • PS简单制作碎花布上的拼贴瓷砖文字效果教程
    • Photoshop打造快速坠入水的文字特效
    • MySQL中key 、primary key 、unique key 与index区别详解
    • 宝塔面板如何屏蔽禁止某个IP(IP段)访问

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有