PHP-PhpSpreadsheet导出带图片方法

需求描述

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

实现方法 

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

        2,导出数据到excel表格

<?phpuse 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 或 Xlsif ($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.0exit;
}

注意事项

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

03_Web开发基础之综合应用

web开发基础之综合使用 学习目标和内容 1、能够描述jQuery的作用 2、能够使用jQuery的选择器获取元素 3、能够使用jQuery对HTML标签元素注册事件 4、能够使用jQuery对HTML元素的属性进行操作 5、能够描述Bootstrap的作用 6、能够使用Bootstrap创建简单网页 7、能够描述AJAX的作…

恒创科技:云服务器怎么买才便宜有优惠

随着云计算技术的不断发展&#xff0c;云服务器已经成为企业和个人用户的重要选择。然而&#xff0c;在购买云服务器时&#xff0c;价格和优惠成为了很多用户关注的焦点。那么&#xff0c;如何购买云服务器才能获得更优惠的价格呢&#xff1f;下面就为大家介绍一些购买云服务器…

yolo网络整理-网络结构原理与anchor

YOLOv5 是Glenn Jocher等人操刀研发&#xff0c;Ultralytics公司的开源项目&#xff0c;项目地址可点击。2020年6月发布以来&#xff0c;Ultralytics公司一直在对项目进行维护与更新&#xff0c;目前repo的star数目突破44k&#xff0c;YOLOv5的功能在迭代中越发强大与完善&…

了解葡萄酒最重要的是什么?

事实上&#xff0c;大多数人只知道葡萄酒是一种酒精饮料味道很好&#xff0c;是您享用食物和营造氛围的完美饮品。但我认为知道得多一点葡萄酒的知识会增加你的欣赏力&#xff0c;你不必搜索葡萄酒来找寻资料&#xff0c;因为标签上有很多信息。 葡萄酒标签里有什么&#xff1f…

MFC 程序执行流程

目录 MFC 程序启动 MFC 入口函数 程序执行流程总结 在Win32课程中WinMain由程序员自己实现&#xff0c;那么流程是程序员安排&#xff0c;但到了MFC中&#xff0c;由于MFC库实现WinMain&#xff0c;也就意味着MFC负责安排程序的流程。 MFC 程序启动 程序的启动&#xff0c;…

热烈祝贺龙泰环保加入2024济南生物发酵展

江苏龙泰环保设备制造有限公司&#xff08;LTEP&#xff09;,是一家致力于工业废气技术的研发、设计、制造、安装调试于一体的综合性科技型企业, 公司自成立以来&#xff0c;坚持高标准、严要求&#xff0c;塑造了一支经验丰富、技术精湛的知识化专业队伍&#xff1b;在坚持自主…

【算法题】 TLV解析 Ⅱ (js)

从第三个字节开始因此 const msg "0F04ABABABAB"; const msg1 "0F04ABABABAB10001FF"; function solution(msg, tags) {const tagObj {};for (let i 0; i 3 < msg.length; ) {const tag parseInt(msg.slice(i, i 2), 16);const len parseInt(m…

MySQL - 创建表的三种方法详解及练习

目录 &#x1f959;1. 基础创建 &#x1f9c0;实例1 &#x1f959;2. 带约束创建 &#x1f9c0;实例2 &#x1f959;3. 复制创建 &#x1f9c0;实例3&#xff1a; &#x1f9c0;实例4&#xff1a; &#x1f9c0;实例5&#xff1a; ​ &#x1f9c0;实例6&#xff1a; &am…

社科院与新加坡新跃社科联合培养博士—我想我的人生变得精彩

既然人生的幕布已拉开&#xff0c;就一定要积极的演出&#xff0c;既然脚步已经跨出&#xff0c;风吹坎坷也不能退步&#xff0c;既然我已经把希望播在这里&#xff0c;就一定要坚持到胜利的谢幕&#xff0c;人生没有什么是为了别人做的&#xff0c;工作不是为了老板&#xff0…

手把手入门MO | 如何通过通过 FineBI 实现 MatrixOne 的可视化报表

1. 概述 FineBI 是新一代大数据分析工具&#xff0c;它有助于企业的业务人员深入了解和充分利用他们的数据。在 FineBI 中&#xff0c;用户可以轻松地制作多样化的数据可视化信息&#xff0c;自由分析和探索数据。FineBI 具有多种数据连接功能&#xff0c;可用于创建各种复杂的…

Android通过listview实现输入框自定义提示栏(代替AutoCompleteTextView自动完成文本框)

效果图 背景 本人因为一些需求初次接触android&#xff0c;需要实现一个类似android自带的AutoCompleteTextView&#xff08;自动完成文本框&#xff09;&#xff0c;但和其不同的是通过后端接口直接筛选数据&#xff08;自己的分词处理规则&#xff09;&#xff0c;然后返回前…

Android-高效加载大图

Android 高效加载大图 前言读取位图尺寸和类型将按比例缩小的版本加载到内存中 前言 图片有各种形状和大小。在很多情况下&#xff0c;它们的大小超过了典型应用界面的要求。例如&#xff0c;系统“图库”应用会显示使用 Android 设备的相机拍摄的照片&#xff0c;这些照片的分…