最近项目有这样一个需求,要导出带有设备二维码的Excel列表。这个功能此前还没有做过,于是百度了一番。网上的解决方法大多数都可以用,但是都没有封装成函数,复用性不高,于是我这里做了一下封装。具体看代码

/***生成带有图片的* $data array(0=>array('A'=>'tom','B'=>10),1=>array('A'=>'jack','B'=>8),)* $tableStyle 表格样式 array('A'=>['title'=>'名字','width'=>20],'B'=>['title'=>'年龄','width'=>10])* $fileName 文件名*/public function excel_down($data,$tableStyle,$fileName=''){// 引入以下类import('PHPExcel',EXTEND_PATH.'phpoffice/phpexcel/Classes');import('Excel2007',EXTEND_PATH.'phpoffice/phpexcel/Classes/PHPExcel/Writer');import('Drawing',EXTEND_PATH.'phpoffice/phpexcel/Classes/PHPExcel/Worksheet');import('IOFactory',EXTEND_PATH.'phpoffice/phpexcel/Classes/PHPExcel');$objPHPExcel = new \PHPExcel();$objActSheet = $objPHPExcel->getActiveSheet();//表格样式foreach ($tableStyle as $key=>$val){//设置表格宽度$objPHPExcel->getActiveSheet()->getColumnDimension($key)->setWidth($val['width']);//设置单元格居中$objPHPExcel->setActiveSheetIndex(0)->getStyle($key)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);$objPHPExcel->getActiveSheet()->getStyle($key)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);//设置表头$objActSheet->setCellValue($key.'1', $val['title']);}//填入数据foreach($data as $k=>$v){$k +=2;$objActSheet->setCellValue('A'.$k, $v['A']);$objActSheet->setCellValue('B'.$k, $v['B']);$objActSheet->setCellValue('C'.$k, $v['C']);$objActSheet->setCellValue('D'.$k, $v['D']);$objActSheet->setCellValue('E'.$k, $v['E']);$objActSheet->setCellValue('F'.$k, $v['F']);$objActSheet->setCellValue('G'.$k, $v['G']);$objActSheet->setCellValue('H'.$k, $v['H']);$objActSheet->setCellValue('I'.$k, $v['I']);$objActSheet->setCellValue('J'.$k, $v['J']);$objActSheet->setCellValue('K'.$k, $v['K']);// 图片生成$objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();$objDrawing[$k]->setPath($v['L']);// 设置宽度高度$objDrawing[$k]->setHeight(80);//照片高度$objDrawing[$k]->setWidth(80); //照片宽度/*设置图片要插入的单元格*/$objDrawing[$k]->setCoordinates('L'.$k);// 图片偏移距离$objDrawing[$k]->setOffsetX(12);$objDrawing[$k]->setOffsetY(12);$objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());// 表格高度$objActSheet->getRowDimension($k)->setRowHeight(80);}$date = date("Y-m-d",time());$fileName .= "_{$date}.xls";$fileName = iconv("utf-8", "gb2312", $fileName);//设置默认打开这是第一个表$objPHPExcel->setActiveSheetIndex(0);header('Content-Type: application/vnd.ms-excel');header("Content-Disposition: attachment;filename=\"$fileName\"");header('Cache-Control: max-age=0');$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('php://output'); //下载}

调用如下

/*** 列表导出*/public function dataExcel($data){$exel = new ExcelController();//表格样式$tableStyle = array('A'=>['title'=>'设备编号',//表头'width'=>20        //宽度],'B'=>['title'=>'设备名称','width'=>20],'C'=>['title'=>'设备类型','width'=>20],'D'=>['title'=>'设备状态','width'=>20],'E'=>['title'=>'货道数','width'=>15],'F'=>['title'=>'设备拥有者','width'=>20],'G'=>['title'=>'运维人员','width'=>20],'H'=>['title'=>'点位方','width'=>20],'I'=>['title'=>'地址','width'=>35],'J'=>['title'=>'sim','width'=>35],'K'=>['title'=>'添加时间','width'=>20],'L'=>['title'=>'二维码','width'=>15]);//处理数组把对应值放入对应列$excelData=array();foreach ($data as $key=>$val){$excelData[$key]['A']=$val['device_sn']."\t";$excelData[$key]['B']=$val['machineName']."\t";$excelData[$key]['C']=$val['type'];if ($val['status']==1){$statusName = '设备在线';}elseif ($val['status']==3){$statusName = '设备离线';}elseif ($val['status']==2){if ($val['quenum']){$statusName = '货道'.$val['quenum'].'缺货';}else{$statusName = '货道'.$val['badnum'].'异常';}}$excelData[$key]['D']=$statusName;$excelData[$key]['E']=$val['number'];$excelData[$key]['F']=$val['user_login'];$excelData[$key]['G']=isset($val['managerName']) ? $val['managerName'] : '无';$excelData[$key]['H']=isset($val['dianweiName']) ? $val['dianweiName'] : '无';$excelData[$key]['I']=isset($val['addresName']) ? $val['addresName'].$val['addressDetail'] : '无';$excelData[$key]['J']=$val['sim'] ? $val['sim']."\t" : '无';$excelData[$key]['K']=date('Y-m-d H:i:s',$val['time']);$excelData[$key]['L']=$val['qrcode'];}$exel->excel_down($excelData,$tableStyle,'设备列表');}

PHP生成带图片的Excel相关推荐

  1. 导出带图片的Excel报表

    导出带图片的Excel报表 先引用 Microsoft.Office.Tools.Excel.v4.0.Utilities.dll程序集,然后在后台页面引用using Excel = Microsof ...

  2. Java带图片的excel数据导入

    带图片的EXCEL数据导入 这里使用的是POI,所以这里使用的很杂,不过方便对它们的了解.模板下载与图片导出到excel都不一样. 下面会把对应连接贴上. 带入依赖:不要使用3.17的版本,直接上代码 ...

  3. VUE Table复杂表格生成带格式的excel(多表头、合并单元格、边框、居中、背景)

    VUE Table复杂表格生成带格式的excel(多表头.合并单元格.边框.居中.背景) 因为工作需要,在网上找了很多都不太行无意之间看到一个大佬的打码拿过来改了改居然可以用! 原文链接:https: ...

  4. JAVA生成带图片带名称的二维码

    maven引入 com.google.zxing package com.util.qrCode;import com.alibaba.druid.util.Base64; import com.gi ...

  5. 利用POI生成带表头的Excel

    1.关于Excel版本的一点了解 在项目工作中主要使用两个版本,03版文件名以".xls"结尾,最大处理行数为65536,07版文件名以".xlsx"结尾,最大 ...

  6. 导出带图片的excel

    昨天导excel 发现有带图片的,找到了ruoyi人家说得自己扩展,留了个思路终于放进去了 第一步要把url转为byte[] /*** 从输入流中获取数据** @param inStream 输入流* ...

  7. 个人用户永久免费,可自动升级版Excel插件,使用VSTO开发,Excel催化剂功能第13波-一键生成带图片自由报表...

    在Excel的世界中,因着Excel的灵活性,觉得广大用户喜欢(一般的系统都是中规中矩,用户没法对它进行半点改变),例如可以用来做简历模板.员工信息标签.员工工资条.任意的多行多列合并单元格形成自己最 ...

  8. 根据模板生成带公式的excel

    将模板(带公式计算)放在项目路径下某个文件夹 //1.生成工资表excel文件FileInputStream fileInputStream = null;try {fileInputStream = ...

  9. 使用freemarker模板生成带图片的word--html格式

    文章目录 前言 一.制作freemarker模板 二.修改模板 三.后台代码 四.结果 总结 前言 用户需要预览word的功能,word里面带了很多图片,本文选择生成html格式的word来提供该功能 ...

最新文章

  1. 欢迎参加“城市大脑与应急管理”专家研讨会
  2. 华为合作oppovivo小米鸿蒙,华为鸿蒙成功的关键:要让小米、OPPO、VIVO都用上鸿蒙...
  3. python【力扣LeetCode算法题库】面试题57 - II-和为s的连续正数序列(滑动窗口)
  4. 2012年度IT博客大赛10强花落谁家暨圆满落幕
  5. HTML/CSS开发规范指南
  6. html script 设置编码,HTML Script text用法及代码示例
  7. 微信再次“杠上”支付宝!|畅言
  8. 基于OpenCV的三维数据点的曲面重构_MySurefaceReconstruction
  9. Android 中多点触摸协议
  10. 读掘金小册组件精讲总结2
  11. STC-ISP烧录软件
  12. Mini Cheetah 代码分析(六)机身控制器MPC控制器
  13. DSP2812/28335 调试问题记录
  14. java有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
  15. 软件测试人员需不需要懂代码
  16. c语言怎么把数字倒过来_如何用C语言将一个数字倒序过来
  17. 产品原型设计规范——Axure
  18. Camtasia v2021.18汉化屏幕录像软件教程分享
  19. 如何解决@RequestParam无法接收vue+axios传递json数据
  20. SORT跟踪算法的详细解释,不容错过

热门文章

  1. 详解adb shell 常用命令
  2. ARMv7 GICv2 GenericTimer 实战演练
  3. android手机采集,Android手机直播之采集技术分析
  4. 佳格天地 AI地图遥感比赛 标签 测试图像黑乎乎一片
  5. 打开用友总账时提示“该产品没有安装,无法使用”
  6. 如何通过Darkvm注册阿里云国际版?
  7. Android使用exchange日历,使用Exchange服务实现跨平台(PC+Web + 移动端)日历的日程管理...
  8. 最新研究动向:智能制造中可应用的技术【区块链与数字孪生】
  9. cannot lock ref问题的解决
  10. 如何用excel做正交分析_如何在SPSS中进行正交设计及正交分析?