PHP-PhpSpreadsheet导出带图片方法

news2024/12/30 1:32:12

需求描述

        导出表格,项目名称对应项目详情页面二维码。

实现方法 

        1,先将各个项目生成的二维码存放到了一个指定目录里面;

        2,导出数据到excel表格

<?php

use PhpOffice\PhpSpreadsheet\Spreadsheet; 
use PhpOffice\PhpSpreadsheet\IOFactory; 
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;

export();

function export()
{
        $servername = "localhost";
        $username = "XXX";
        $password = "XXX";
        $dbname = "XXX";
        //创建连接
        $conn = mysqli_connect($servername,$username,$password,$dbname);
        //检测连接
        if(!$conn){
            die('连接失败:'.mysqli_connect_error());
        }
        $newExcel = new Spreadsheet();  //创建一个新的excel文档
        $objSheet = $newExcel->getActiveSheet();  //获取当前操作sheet的对象
        //设置宽度为true
        $newExcel->getActiveSheet()->getColumnDimension('A')->setWidth(3);
        $newExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
        $objSheet->setTitle('项目表');  //设置当前sheet的标题
        //设置第一栏的标题
        $objSheet->setCellValue('A1', '名称')
                 ->setCellValue('B1', '图片');
        //获取数据库的数据。
        $sql = "SELECT id,title FROM feiyi_protection ORDER BY ftype ASC,fwords ASC";
        $k = 2;
        $result = mysqli_query($conn,$sql);
        $dataArray = [];
        while ($val = mysqli_fetch_assoc($result)) {
            $objSheet->setCellValue('A' . $k, $val['title']);    //数据行
            // 获取本地文件夹路径
            $dir = __DIR__.'/poster/code/';
            $file_info = $val['id'].'.png';
            // 引入操作图片类
            $drawing[$k] = new Drawing();
            $drawing[$k]->setName('GoodsCode');
            $drawing[$k]->setDescription('GoodsCode');
            $drawing[$k]->setPath($dir . $file_info);
            $drawing[$k]->setWidth(80);
            $drawing[$k]->setHeight(80);
            $drawing[$k]->setCoordinates('B' . $k);
            $drawing[$k]->setOffsetX(10);
            $drawing[$k]->setOffsetY(10);
            $drawing[$k]->setWorksheet($newExcel->getActiveSheet());
            // 每行高度设置
           $objSheet->getRowDimension($k)->setRowHeight(80);
           $k++;
      }
      downloadExcel($newExcel, '表1', 'Xls');
}

function downloadExcel($newExcel, $filename, $format)
{
    // $format只能为 Xlsx 或 Xls
    if ($format == 'Xlsx') {
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    } elseif ($format == 'Xls') {
        header('Content-Type: application/vnd.ms-excel');
    }
    header("Content-Disposition: attachment;filename=" . $filename . date('Y-m-d') . '.' . strtolower($format));
    header('Cache-Control: max-age=0');
    $objWriter = IOFactory::createWriter($newExcel, $format);
    $objWriter->save('php://output');
    //通过php保存在本地的时候需要用到
    //$objWriter->save($dir.'/demo.xlsx');
    //以下为需要用到IE时候设置
    // If you're serving to IE 9, then the following may be needed
    //header('Cache-Control: max-age=1');
    //If you're serving to IE over SSL, then the following may be needed
    //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
    //header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
    //header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
    //header('Pragma: public'); // HTTP/1.0
    exit;
}

注意事项

        1,要引入相应的类,否则会报错哟~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大气污染扩散模型Calpuff丨Calmet气象模块、Calpost后处理模块、Post Tools后处理工具及绘图工具等

目录 第一章 Calpuff基础知识 第二章 数据预处理 第三章 Calmet气象模块 第四章 Calpuff模块 第五章 Calpost后处理模块 第六章 Post Tools后处理工具及绘图工具 更多应用 Calpuff模型是一种三维非稳态拉格朗日扩散模型&#xff0c;可有效地处理非稳态&#xff08;如&am…

梯形加减速点动功能块(SMART PLC梯形图)

博途PLC的梯形加减速点动功能块算法和源代码介绍请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/133185836https://rxxw-control.blog.csdn.net/article/details/133185836 1、梯形加减速速度曲线 2、梯形加减速点动功能块 3、接口定义

使用GPU利用ffmpeg-在Pyhton代码中实现视频转码到MP4格式的过程记录【失败告终-原因是显示型号太老不支持】

01-安装Nvida的显卡驱动和CUDA 参考文章 https://blog.csdn.net/wenhao_ir/article/details/125253533 进行安装。 02-下载ffmpeg的可执行文件 下载ffmpeg的Windows可执行文件&#xff0c;下载页面&#xff1a; https://www.gyan.dev/ffmpeg/builds/#release-builds 我在202…

【MyBatis Plus】逻辑删除、分页、乐观锁的应用及讲解

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《MyBatis-Plus》。&#x1f3af;&#x1f3af; &am…

Pipeline 助您轻松驾驭海量数据!

前言 数据治理在当今信息时代变得至关重要。随着数据量的不断增长和多样化&#xff0c;组织需要有效地管理和利用这些数据&#xff0c;以支持业务决策和创新发展。不论是做数据分析还是数据解析&#xff0c;利用 Pipeline 可以帮助组织实现数据治理的自动化和规范化&#xff1…

Ubuntu 20.04 prometheus prometheus-process-exporter

prometheus-process-exporter 监控系统架构方案 https://blog.csdn.net/weixin_45801289/article/details/126922395 sudo apt install prometheus-process-exporter prometheus-process-exporter_0.4.0ds-1_amd64.deb service prometheus-process-exporter status netstat …

【数据结构和算法】移动零

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针 2.2 方法二&#xff1a;两次遍历 2.3 方法三&#xff1a;一次遍历 三、…

vue_域名部署无法访问后端

前言 目前部署的比较另类&#xff0c;因为服务器为windows&#xff0c;目前还不是很会nginx&#xff0c;所以现在就只能在服务器上安装nodejs&#xff0c;然后直接使用npm run dev命令行的方式运行项目 遇到的坑 使用ip访问前端的时候&#xff0c;就可以访问&#xff0c;但是…

户外用品网站搭建的效果如何

近几年户外运动成为热门话题&#xff0c;户外装备品牌也逐渐出现在人们眼前&#xff0c;新老企业都在用自己的方式提升品牌形象&#xff0c;包括帐篷、登山用具、钓鱼品、滑雪品等&#xff0c;在市场都有很高需求。 而在实际经营中&#xff0c;户外用品品牌也面临一些难题&…

【postgresql】PSQLException: An I/O error occurred while sending to the backend.

org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend. 发送到后端时发生I/O错误。 java.io.IOException: Tried to send an out-of-range integer as a 2-byte value: 34284 尝试将超出范围的整数作为2字节值发送&#xff1a;34284 pos…

基于单片机的视力保护及身姿矫正器设计(论文+源码)

1. 系统设计 在本次设计中&#xff0c;其系统整个框图如图2-1所示。其主要的核心控制模块由超声波模块&#xff0c;光敏电阻&#xff0c;按键模块&#xff0c;复位电路&#xff0c;红外模块&#xff0c;LCD显示等组成。其包括自动模式&#xff0c;手动模式。自动模式&#xff…

天猫数据分析-天猫查数据软件-11月天猫平台饮料市场品牌及店铺销量销额数据分析

今年以来&#xff0c;饮料是快消品行业中少数保持稳定增长的品类之一。 11月份&#xff0c;饮料市场同样呈现较好的增长态势。根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;今年11月份&#xff0c;天猫平台上饮料市场的销量为2700万&#xff0c;环比增长约42%&#xf…

Linux本地搭建StackEdit Markdown编辑器结合内网穿透实现远程访问

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器&#xff0c;在GitHub上拥有20.7k Star&#xff01;&#xff0c;它支持将Markdown笔记保…

CentOS7安装Docker及添加阿里云镜像加速详细教程

Docker官方安装教程网站&#xff1a;Install Docker Engine on CentOS | Docker Docs 具体流程如下&#xff1a; 1.确定你是CentOS7及以上版本 cat /etc/redhat-release 2.yum安装gcc相关 yum -y install gcc yum -y install gcc-c 3.安装需要的软件包 3.1安装docker引擎…

Python:发送qq邮箱只需几行代码轻松搞定

一、前言 在日常业务中&#xff0c;经常会遇到需要程序发邮件提醒自己的情况。例如数据异常、工作任务进度完成情况、今日天气、今日股票行情等各种场景。如果引入发送邮箱以推进预期进度的功能&#xff0c;那将大大优化我们的日常。我也是近期在写国债逆回购的监控脚本时想起…

chatchat知识库对话接口修改成sse流式输出方案

在chatchat结合chatGLM搭建的私有化知识库中&#xff0c;使用原生的webUI画面是可以流式输出的&#xff0c;而直接调用api接口&#xff0c;不管stream为true还是false&#xff0c;都是阻塞式输出的&#xff0c;也就是一口气返回给接口。 我们的解决方案是修改StreamingRespons…

32位MCU极致性价比高速风筒方案特点--【其利天下技术】

近年来&#xff0c;伴随着人们消费升级及现代工业技术水平的提升&#xff0c;电吹风市场已经步入了绿色节能、高效多功能化的发展阶段。人们对电吹风的需求和要求都在不断增加。然而&#xff0c;传统电吹风采用交流电机&#xff0c;使用寿命有限&#xff0c;维护不方便&#xf…

C++1114新标准——Lambdas,decltype

系列文章目录 C11&14新标准——Variadic templates&#xff08;数量不定的模板参数&#xff09; C11&14新标准——Uniform Initialization&#xff08;统一初始化&#xff09;、Initializer_list&#xff08;初始化列表&#xff09;、explicit C11&14新标准—— d…

【Python数据分析系列】一文搞懂二维数组中的排列组合(案例源码)

一、问题场景 在工作中&#xff0c;我们经常会碰到这样的问题场景&#xff0c;有一个4行5列的二维数组&#xff08;4个波段&#xff0c;5个采样点&#xff09;&#xff0c;一行&#xff08;一个一维数组&#xff09;代表一个波段&#xff0c;我想知道数组中任意两个波段的差&am…

ESP32 连接阿里云 MQTT 报错MQTT Connect err:2

解决方法 跳转到 这个头文件<PubSubClient.h>里 MQTT_MAX_PACKET_SIZE 把这个的大小从原来的256 改为1024 MQTT_KEEPALIVE 把这个大小从原来的15 改为65 修改后再次连接即可成功 如下图&#xff1a;