PhpOffice相关注意点,下载图片,导出导入等功能

一、导出表格注意点

1.数字导出变成科学公式 参数两边加上 ”\t“$worksheet->setCellValue('C'.$hang,"\t".$v['title']."\t");2.内外边框线 表格格式$styleOneArray=['alignment'=>['horizontal'=>\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,// 水平居中'vertical'=>\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER//垂直居中],'font'=>['bold'=>true],// 字体加粗];$worksheet->getStyle('A1'.':D'.$hang)->applyFromArray($styleOneArray);$worksheet->getStyle('A1'.':D'.$hang)->applyFromArray($styleTwoArray);3.自动换行$excel->getActiveSheet()->getStyle('A1:D'.$hang)->getAlignment()->setWrapText(true);4.单元格添加背景$worksheet->getStyle('A2:I3')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('87CEFA');5.下载图片$url='.';//下载链接$drawing[$hang]=new\PhpOffice\PhpSpreadsheet\Worksheet\Drawing();$drawing[$hang]->setName('图片');$drawing[$hang]->setDescription('图片');$drawing[$hang]->setPath($url);$drawing[$hang]->setWidth(70);$drawing[$hang]->setHeight(70);$drawing[$hang]->setCoordinates('AC'.$hang);$drawing[$hang]->setOffsetX(0);$drawing[$hang]->setOffsetY(0);$drawing[$hang]->setWorksheet($excel->getActiveSheet());6.表格行高$worksheet->getRowDimension($hang)->setRowHeight(28);7.单元格合并$excel->getActiveSheet()->mergeCells('A'.$hang.':AF'.$hang);8.单元格文本格式$worksheet->getCell('C'.$hang)->setValueExplicit('',\PhpOffice\PhpSpreadsheet\Cell\DataType::TYPE_STRING);
二、导入表格注意点1.时间转换2.是否为数字publicfunctionimport(){$file=$this->request->post('file');$file=str_replace($this->domain_url,"",$file);if(!$file){$this->error(__('Parameter %s can not be empty','file'));}$filePath=ROOT_PATH.DS.'public'.DS.$file;// print_r($filePath);exit;if(!is_file($filePath)){$this->error(__('No results were found'));}$ext=pathinfo($filePath,PATHINFO_EXTENSION);if(!in_array($ext,['csv','xls','xlsx'])){$this->error(__('Unknown data format'));}if($ext==='csv'){$file=fopen($filePath,'r');$filePath=tempnam(sys_get_temp_dir(),'import_csv');$fp=fopen($filePath,"w");$n=0;while($line=fgets($file)){$line=rtrim($line,"\n\r\0");$encoding=mb_detect_encoding($line,['utf-8','gbk','latin1','big5']);if($encoding!='utf-8'){$line=mb_convert_encoding($line,'utf-8',$encoding);}if($n==0||preg_match('/^".*"$/',$line)){fwrite($fp,$line."\n");}else{fwrite($fp,'"'.str_replace(['"',','],['""','","'],$line)."\"\n");}$n++;}fclose($file)||fclose($fp);$reader=newCsv();}elseif($ext==='xls'){$reader=newXls();}else{$reader=newXlsx();}$insert=[];try{if(!$PHPExcel=$reader->load($filePath)){$this->error(__('Unknown data format'));}$currentSheet=$PHPExcel->getSheet(0);$allRow=$currentSheet->getHighestRow();$i=1;for($j=2;$j<=$allRow;$j++){$insert[$i-1]=['csname'=>trim($currentSheet->getCell("B".$j)->getValue()),'name'=>trim($currentSheet->getCell("C".$j)->getValue()),'cssname'=>trim($currentSheet->getCell("D".$j)->getValue()),'csssname'=>trim($currentSheet->getCell("E".$j)->getValue()),'allmoney'=>trim($currentSheet->getCell("F".$j)->getValue()),'catename'=>trim($currentSheet->getCell("G".$j)->getValue()),'cstime'=>trim($currentSheet->getCell("H".$j)->getValue()),'csarea'=>trim($currentSheet->getCell("I".$j)->getValue())];$i++;}}catch(Exception$exception){$this->error($exception->getMessage());}if(!$insert){$this->error(__('No rows were updated'));}$insertArr=[];$return=['code'=>true,'msg'=>'成功'];foreach($insertas$key=>$val){// print_r($val);exit;$temp['name']=$val['name'];$temp['csname']=$val['csname'];$temp['cssname']=$val['cssname'];$temp['allmoney']=$val['allmoney'];$temp['csarea']=$val['csarea'];//时间if(!empty($val['cstime'])){$time=$val['cstime'];//表格时间样式$d=25569;$t=24*60*60;$checkdate=intval(($time-$d)*$t);$checktime=gmdate("Y-m-d H:i:s",$checkdate);$temp['cstime']=!empty($checktime)?strtotime($checktime):0;}else{$return=['code'=>false,'msg'=>'时间不为空'];break;}//来源地省市if($val['csssname']){$area=new\app\common\model\Area;$wherea=[];$wherea['name']=$val['csssname'];$temptzf=[];$temptzf['other']=false;$categorys=$area->getOne("id,pid,name,shortname",$wherea,$temptzf);if($categorys['code']==false){$return=['code'=>false,'msg'=>'来源地:['.$val['csssname'].']不存在'];break;}else{$tzflaiyuanname=!empty($categorys['data'])?$categorys['data']['name']:'';}}else{$return=['code'=>false,'msg'=>'来源地不为空'];break;}if(!is_numeric($val['csmoney'])){$return=['code'=>false,'msg'=>'不为数字'];break;}if($val['csmoney']<0){$return=['code'=>false,'msg'=>'不为负值'];break;}// print_r($temp);exit;$insertArr[]=$temp;$result=Db::name('test')->insertGetId($temp);}if(!$return['code']){$this->error($return['msg']);}// $this->selfModel->allowField(true)->saveAll($insertArr);$this->success("导入成功");}
三、PDF导出publicfunctiondaochupdf(){$id=$this->request->request("id");$xms=new\app\common\model\Xms();$where=[];$where['id']=$id;$ones=$xms->getOne('',$where);$one=$ones['data'];$pdf=new\TCPDF('L','mm','A4',true,'UTF-8',false);// 设置文档信息----文件创作者$pdf->SetCreator(PDF_CREATOR);$pdf->SetAuthor('');$pdf->SetTitle($one['name']);$pdf->setPrintHeader(false);// 去除页眉下划线$pdf->setPrintFooter(false);// 去除页脚下划线// 设置默认等宽字体$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);// 设置间距$pdf->SetMargins(1,1,1);$pdf->SetHeaderMargin(0);$pdf->SetFooterMargin(0);// 设置分页$pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);// 设置图像比例因子$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);// 设置默认字体构造子集模式global$l;$pdf->setLanguageArray($l);// 设置字体$pdf->SetFont('stsongstdlight','',10);// 添加一个页面$pdf->AddPage();if($one){$files=$one['files'];$html=' <html> <head> <style> .el-row { -webkit-box-sizing: border-box; box-sizing: border-box; position: relative; } .el-col-24 { width: 100%; } .title { line-height: 24px; background: #F1F7F5; padding-left: 5px; margin: 15px 0 5px; color: black; font-size: 14px; font-weight: bold; border-bottom: 2px solid #46BF93; } </style> </head> <body> <div class="el-row"> <div class="el-col el-col-24"> <div class="title"> <img src="https://.com/assets/img/xqbot.png" alt="" style="height:24px;width: 10px;">基本信息 </div> </div> </div> <div > <table> <tr> <td style="height:30px;width: 150px;text-align: right;">项目名称:</td> <td style="height:40px;width: 250px;text-align: left;padding-left: 20px;">'.$one['name'].'<i style="height:30px;font-size:8px;margin:3px;width:80px;color:#fff;background-color:'.$one['status_color'].';">'.$one['status_text'].'</i></td> </tr> <tr> <td style="height:30px;width: 150px;text-align: right;">简介:</td> <td style="width: 650px;text-align: left;padding-left: 20px;">'.$one['blurb'].'</td> </tr> <tr> <td style="height:20px;"></td> </tr> <tr> <td style="height:30px;width: 150px;text-align: right;">活动开展情况:</td> <td style="text-align: left;padding-left: 20px;width: 450px;"> <ul style="list-style: none;"> ';foreach($filesas$k=>$v){$html.=' <li > <img src="'.$v['url'].'" style="width:70px;height:70px;text-align: left;">'.$v['name'].' </li>';}$html.='</ul></td></tr></table></div></body></html>';$pdf->writeHTML($html,true,false,true,false,'');//$pdf->writeHTMLCell(0, 0, '', '', $html, 'LRTB', 1, 0, true, 'L', true);$pdf->lastPage();}$pdf->lastPage();// 默认是I:在浏览器中打开,D:下载,F:在服务器生成pdf ,S:只返回pdf的字符串,个人感觉无实在意义// $pdf->Output('down.pdf', 'I');// exit;$title=$one['name'].'.pdf';$dir='/www/wwwroot/abc.abc.com/public/uploads/pdf/'.$title;$pdf->Output($dir,'I');exit;}

相关新闻

副队长JavaScript教程(6)–输出语句

副队长JavaScript教程(6)–输出语句

点此查看 所有教程、项目、源码导航 文章目录1. 前言2. 弹窗输出3. 网页内容输出4. 控制台输出5. 小结1. 前言 之前我们只讲过一个JS语句&#xff1a;alert&#xff0c;用于弹窗显示信息。一般这种程序显示信息的语句&#xff0c;可以称之为输出语句&#xff0c;意思是程序输出…

2026/10/20 1:10:40 阅读更多 →
Muse开源AI代理硬件设计:ESP32+树莓派构建个人桌面Agent

Muse开源AI代理硬件设计:ESP32+树莓派构建个人桌面Agent

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:09:40 阅读更多 →
嵌入式AI芯片落地指南:从NPU原理到模型量化与部署实践

嵌入式AI芯片落地指南:从NPU原理到模型量化与部署实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:09:40 阅读更多 →

最新新闻

STM32F407单相PWM整流双闭环控制实战

STM32F407单相PWM整流双闭环控制实战

简介&#xff1a;本资源是针对2022年全国大学生电子设计竞赛A题‘单相交流电子负载’的完整嵌入式实现方案&#xff0c;面向电赛备赛学生、STM32初/中级开发者及电力电子方向实践者&#xff0c;重点解决单相系统下高精度锁相与PWM整流控制这一核心难点。工程基于STM32F407VET6主…

2026/10/20 11:09:04 阅读更多 →
斯坦福ToddlerBot——用于行走操控且与机器学习兼容的0.56m小人形:6000美刀成本下,可VR遥操、可RL训练

斯坦福ToddlerBot——用于行走操控且与机器学习兼容的0.56m小人形:6000美刀成本下,可VR遥操、可RL训练

前言 我司q4的几个侧重点&#xff1a; 在深圳手搓人形世界模型及WAM叠衣服继续双足全身vla/WAM继续强化我司「插拔/装配、搬运/分拣」垂直模型 本点中的“插拔/装配”&#xff0c;涉及RSI的落地/实践不断强化RL运控实力 故持续欢迎敢闯、敢干的年轻人&#xff0c;随我们每周…

2026/10/20 11:09:04 阅读更多 →
Citra 免费 3DS 模拟器:完整上手指南

Citra 免费 3DS 模拟器:完整上手指南

Citra 免费 3DS 模拟器&#xff1a;完整上手指南 【免费下载链接】citra A Nintendo 3DS Emulator 项目地址: https://gitcode.com/GitHub_Trending/ci/citra Citra 是开源的任天堂 3DS 模拟器&#xff0c;支持 Windows、macOS 与 Linux 三大平台。本文带你走完"认…

2026/10/20 11:09:04 阅读更多 →
网关架构:知乎千万级长连接网关架构

网关架构:知乎千万级长连接网关架构

知乎千万级长连接网关架构 知乎长连接网关要服务的不是单一业务&#xff0c;而是多个 App 和十几个形态各异的长连接业务。因此它的核心目标不是“为某个业务做一套专用长连接”&#xff0c;而是做一套共享、可水平扩展、业务解耦的通用长连接系统。 一、发布订阅模型 多客户端…

2026/10/20 11:09:04 阅读更多 →
STM32F407单相DQ锁相+PWM整流实时控制实战

STM32F407单相DQ锁相+PWM整流实时控制实战

简介&#xff1a;本资源是针对2022年全国大学生电子设计竞赛A题‘单相交流电子负载’的完整嵌入式实现方案&#xff0c;面向STM32初学者及电赛备赛学生&#xff0c;聚焦单相PWM整流控制中的核心难点——高精度锁相环设计。方案基于STM32F407VET6主控&#xff0c;采用STM32CubeM…

2026/10/20 11:09:04 阅读更多 →
蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

蒙特卡洛法在电力系统状态估计与风险评估中的MATLAB实现

简介&#xff1a;已有307人学习的这份Matlab资源&#xff0c;聚焦蒙特卡洛法在电力系统状态估计与风险评估中的应用&#xff0c;适合电力系统研究人员、运行工程师及电气专业高年级学生使用。资源从建模出发&#xff0c;覆盖节点电压、线路潮流等状态量的最可能估计&#xff0c…

2026/10/20 11:08:03 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →