首页 > 编程语言 >使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录

使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录

时间:2023-12-05 23:32:52浏览次数:35  
标签:Excel imageFile 详解 oldName ThinkPHP 图片 public row

ThinkPHP依赖以下环境Nginx+PHP,建议提前装好Composer,PHP、Composer需要设置好系统环境变量。

1.通过 Composer 安装Laravel框架

composer create-project topthink/think thinkphp6

使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录_批量处理图片

启动服务测试

cd thinkphp6
php think run

然后就可以在浏览器中访问

http://localhost:8000

使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录_excel_02

如果不能显示这个界面,请检查是否漏掉了上面某个步骤。

如果需要更新框架使用

composer update topthink/framework

2.通过 Composer 安装PhpSpreadsheet

使用PhpSpreadsheet库来读取Excel文件

composer require phpoffice/phpspreadsheet

使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录_批量处理图片_03

3.根据自己的需求编写批量处理代码

使用ThinkPHP框架根据Excel内容批量处理图片名称详解记录_批量处理图片_04

修改app\controller\Index.php文件

<?php
namespace app\controller;

use app\BaseController;

class Index extends BaseController
{
    public function index()
    {
        return '<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} a{color:#2E5CD5;cursor: pointer;text-decoration: none} a:hover{text-decoration:underline; } body{ background: #fff; font-family: "Century Gothic","Microsoft yahei"; color: #333;font-size:18px;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.6em; font-size: 42px }</style><div style="padding: 24px 48px;"> <h1>:) </h1><p> ThinkPHP V' . \think\facade\App::version() . '<br/><span style="font-size:30px;">14载初心不改 - 你值得信赖的PHP框架</span></p><span style="font-size:25px;">[ V6.0 版本由 <a href="https://www.yisu.com/" target="yisu">亿速云</a> 独家赞助发布 ]</span></div><script type="text/javascript" src="https://tajs.qq.com/stats?sId=64890268" charset="UTF-8"></script><script type="text/javascript" src="https://e.topthink.com/Public/static/client.js"></script><think id="ee9b1aa918103c4fc"></think>';
    }

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }

    public function batchRenameImages()
    {
        // 设置图片所在的文件夹路径
        $imageFile = public_path()."static/";
        // 设置Excel文件路径和工作表名称
        $excelFile = public_path()."static/1.xlsx";
        $sheetName = "Sheet1";
        // 读取Excel文件
        $excelData = [];
        $excelReader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        $spreadsheet = $excelReader->load($excelFile);
        $worksheet = $spreadsheet->getSheetByName($sheetName);

        // 遍历Excel表格的每一行
        for ($row = 2; $row <= $worksheet->getHighestRow(); $row++) {
            // 获取第一列和第二列的值
            $oldName = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
            $newName = $worksheet->getCellByColumnAndRow(2, $row)->getValue();

            // 替换图片名称
            if (file_exists($imageFile."images/".$oldName)) {
                rename($imageFile."images/".$oldName, $imageFile."images/".$newName);
                echo "成功替换图片:{$oldName} -> {$newName}<br>";
            } else {
                echo "图片不存在:{$oldName}<br>";
            }
        }
    }

    public function batchCopyImages()
    {
        // 设置图片所在的文件夹路径
        $imageFile = public_path()."static/";
        // 设置Excel文件路径和工作表名称
        $excelFile = public_path()."static/1.xlsx";
        $sheetName = "Sheet1";
        // 读取Excel文件
        $excelData = [];
        $excelReader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        $spreadsheet = $excelReader->load($excelFile);
        $worksheet = $spreadsheet->getSheetByName($sheetName);

        // 遍历Excel表格的每一行
        for ($row = 2; $row <= $worksheet->getHighestRow(); $row++) {
            // 获取第一列和第二列的值
            $oldName = $worksheet->getCellByColumnAndRow(1, $row)->getValue();
            $newName = $worksheet->getCellByColumnAndRow(2, $row)->getValue();

            // 替换图片名称
            if (file_exists($imageFile."images/".$oldName)) {
                if (copy($imageFile."images/".$oldName, $imageFile."image/".$newName)) {
                    echo "图片复制成功!<br>";
                } else {
                    echo "图片复制失败!<br>";
                }
            } else {
                echo "图片不存在:{$oldName}<br>";
            }
        }
    }
}

批量重命名图片

http://localhost:8000/index.php/index/batchRenameImages

批量复制图片

http://localhost:8000/index.php/index/batchCopyImages

大家也可以根据自己的需求编写批量处理代码。

创作不易,如果您觉得这篇文章对您有帮助,欢迎点赞、收藏、转发,有不同的见解可以评论区留言。感谢支持!


标签:Excel,imageFile,详解,oldName,ThinkPHP,图片,public,row
From: https://blog.51cto.com/u_16308706/8696469

相关文章

  • excel 循环
    testxlsx=pd.ExcelWriter('test.xlsx')foriinplat_360:forjinrange(0,len(needcolumns)):ifneedcolumns[j]!='省份':table=pd.pivot_table(data_cgm_360_copy_dropdup[data_cgm_360_copy_dropdup.plati],index='等级',columns=needcolum......
  • MySQL EXPLAIN详解
    MySQL数据库是许多Web应用程序的底层支持,而查询性能的优化是确保系统高效运行的关键。在MySQL中,EXPLAIN是一项强大的工具,可帮助开发者深入了解查询语句的执行计划,从而更好地优化查询性能。本文将详细解析MySQL的EXPLAIN关键字,以揭开查询执行计划的面纱。什么是EXPLAIN?mysql官网......
  • Django中ForeignKey函数详解
    在Django中,ForeignKey是一个数据库模型字段,用于创建多对一(many-to-one)的关系。它实质上是数据库表之间的一个链接,指向另一个模型的实例。在Django的ORM(对象关系映射)系统中,ForeignKey字段非常重要,因为它允许模型间的数据关联和交互。基本用法在Django模型中定义ForeignKey......
  • C++11、C++14、C++17、C++20新特性总结(5万字详解)(转载)
    文章目录C++11是什么,C++11标准的由来C++auto类型推导完全攻略auto类型推导的语法和规则auto的高级用法auto的限制auto的应用使用auto定义迭代器auto用于泛型编程C++decltype类型推导完全攻略exp注意事项decltype推导规则decltype的实际应用汇总auto和......
  • 数据库的几种连表方式详解
    数据库主要有五种连表方式首先需要准备两张表: 图书表bookid   name  price  publish_id1西游记 3312红楼梦5613三国演义6624西厢记556     出版社表publishid   name    addr1北京出版社北京......
  • Excel判断日期是否是工作日的实现(排除节假日,加上补班日)
     实现思路:工作日= 【周一到周五(排除节假日)或者补班日】公式编写:1.周一到周五判断WEEKDAY(A2,2) 获取该日期是星期几(返回:1-7),那么周一到周五就是<62.非节假日判断COUNTIF($G$2:$G$398,A2)=0统计该日期在指定区域$G$2:$G$398中出现的次数,非节假日就是未出现,出现......
  • [转]vue3+tsx开发语法详解
    原文地址:vue3+tsx开发语法详解-知乎很多组件库都使用了TSX的方式开发,主要因为其灵活性比较高,TSX和SFC开发的优缺点就不介绍了,这里主要说一下将SFC项目改造为TSX的过程。安装JSX库pnpminstall@vitejs/plugin-vue-jsx-D安装完之后在vite.config.ts进行插件使用,代码如下......
  • ​HTML代码混淆技术:原理、应用和实现方法详解
    ​HTML代码混淆是一种常用的反爬虫技术,它可以有效地防止爬虫对网站数据的抓取。本文将详细介绍HTML代码混淆技术的原理、应用以及实现方法,帮助大家更好地了解和运用这一技术。一、HTML代码混淆的原理HTML代码混淆是指将HTML源码通过特定的算法进行加密处理,使得人类可读的源码变......
  • IntelliJ IDEA 2023.2新特性详解第三弹!Docker、Kubernetes等支持!
    9Docker在Docker镜像层内预览文件现在可以在Services(服务)工具窗口中轻松访问和预览Docker镜像层的内容。从列表选择镜像,选择Showlayers(显示层),然后点击Analyzeimageformoreinformation(分析镜像以获得更多信息)。这将打开层中存储的文件列表,你可以右键点击文件,然后......
  • 硬件开发笔记(十四):RK3568底板电路LVDS模块、MIPI模块电路分析、LVDS硬件接口、MIPI硬件
    前言  本篇继续分析底板原理图mipi/lvds屏幕电路原理图、硬件接口详解。 LVDS与MIPI的区别  液晶屏有RGBTTL、LVDS、MIPI、HDMI接口,这些接口区别于信号的类型(种类),也区别于信号内容。RGBTTL接口信号类型是TTL电平,信号的内容是RGB666或者RGB888还有行场同步和......