电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

PHP實現(xiàn)生成Excel文件并導(dǎo)出的示例詳解

瀏覽:196日期:2022-06-06 18:41:18

在現(xiàn)在的項目里,不管是電商項目還是別的項目,在管理端都會有導(dǎo)出的功能,比方說訂單表導(dǎo)出,用戶表導(dǎo)出,業(yè)績表導(dǎo)出。這些都需要提前生成excel表,然后在導(dǎo)出,實際上是在代碼里生成一張excel表,然后通過下載api進(jìn)行導(dǎo)出的。好了 先給大家講一下示例

利用php導(dǎo)出excel我們大多會直接生成.xls文件,這種方便快捷。

首先我們先在項目中引入幾個類

use \PhpOffice\PhpSpreadsheet\Spreadsheet;use \PhpOffice\PhpSpreadsheet\IOFactory;use \PhpOffice\PhpSpreadsheet\Cell\Coordinate;use PhpOffice\PhpSpreadsheet\Style\Border;use PhpOffice\PhpSpreadsheet\Style\Alignment;

然后我們在進(jìn)行封裝一個生成并導(dǎo)出excel表的方法,這里我們用訂單表做示例

//訂單信息導(dǎo)出excel    public function order_outputProjectExcel($info){$newExcel = new Spreadsheet();//創(chuàng)建一個新的excel文檔$objSheet = $newExcel->getActiveSheet();//獲取當(dāng)前操作sheet的對象$date = date("Ymd",time());$name = "訂單信息表";$objSheet->setTitle($name);//設(shè)置當(dāng)前sheet的標(biāo)題 //樣式設(shè)置 - 合并和拆分$objSheet->mergeCells("A1:P1"); //合并單元格//$sheet -> unmergeCells("C3:G3"); //拆分單元格$objSheet->setCellValue("A1",$name); //設(shè)置第一欄的中文標(biāo)題$objSheet->setCellValue("A2", "編號")    ->setCellValue("B2", "商品圖片")    ->setCellValue("C2", "商品名稱")    ->setCellValue("D2", "會員編號")    ->setCellValue("E2", "直屬")    ->setCellValue("F2", "非直屬")    ->setCellValue("G2", "訂單號")    ->setCellValue("H2", "商品單價")    ->setCellValue("I2", "實付金額")    ->setCellValue("J2", "商品傭金")    ->setCellValue("K2", "會員傭金")    ->setCellValue("L2", "直屬傭金")    ->setCellValue("M2", "非直屬傭金")    ->setCellValue("N2", "支付時間")    ->setCellValue("O2", "支付渠道")    ->setCellValue("P2", "訂單狀態(tài)"); //寫入數(shù)據(jù)$dataCount = count($info);$k = 2;if($dataCount == 0){    exit;}else{    for ($i=0;$i<$dataCount;$i++){$k = $k + 1;$order=$i+1;$objSheet->setCellValue("A" . $k, $info[$i]["id"])    ->setCellValue("B" . $k, $info[$i]["goods_image"])    ->setCellValue("C" . $k, $info[$i]["goods_name"])    ->setCellValue("D" . $k, $info[$i]["user_num"])    ->setCellValue("E" . $k, $info[$i]["user_upteam"])    ->setCellValue("F" . $k, $info[$i]["user_un_upteam"])    ->setCellValue("G" . $k, $info[$i]["order_id"])    ->setCellValue("H" . $k, $info[$i]["goods_price"])    ->setCellValue("I" . $k, $info[$i]["payment"])    ->setCellValue("J" . $k, $info[$i]["goods_yongjin"])    ->setCellValue("K" . $k, $info[$i]["user_yongjin"])    ->setCellValue("L" . $k, $info[$i]["user_up_yongjin"])    ->setCellValue("M" . $k, $info[$i]["user_un_upyongjin"])    ->setCellValue("N" . $k, $info[$i]["paymenttime"])    ->setCellValue("O" . $k, $info[$i]["pay_way_ch"])    ->setCellValue("P" . $k, $info[$i]["status_ch"]);    }} //設(shè)定樣式//所有sheet的表頭樣式 加粗$font = [    "font" => ["bold" => true,"size" => 14,    ],];$objSheet->getStyle("A1:P1")->applyFromArray($font); //樣式設(shè)置 - 水平、垂直居中$styleArray = [    "alignment" => ["horizontal" => Alignment::HORIZONTAL_CENTER,"vertical" => Alignment::VERTICAL_CENTER    ],];$objSheet->getStyle("A1:P2")->applyFromArray($styleArray); //所有sheet的內(nèi)容樣式-加黑色邊框$borders = [    "borders" => ["outline" => [    "borderStyle" => Border::BORDER_THIN,    "color" => ["argb" => "000000"],],"inside" => [    "borderStyle" => Border::BORDER_THIN,]    ],];$objSheet->getStyle("A1:P".$k)->applyFromArray($borders); //設(shè)置寬度$cell = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P"];foreach($cell as $k=>$v){    $objSheet->getColumnDimension($v)->setWidth(20); //    $objSheet->getColumnDimension($v)->setAutoSize(true);} $this->downloadExcel($newExcel,$name,"Xlsx");    }                    //下載    private function downloadExcel($newExcel,$filename,$format)    {ob_end_clean();ob_start();// $format只能為 Xlsx 或 Xlsif ($format == "Xlsx") {    header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");} elseif ($format == "Xls") {    header("Content-Type: application/vnd.ms-excel");}//  strtolower($format)header("Content-Disposition: attachment;filename="    . $filename . "." . strtolower($format));header("Cache-Control: max-age=0");$objWriter = IOFactory::createWriter($newExcel, $format);$objWriter->save("php://output");//通過php保存在本地的時候需要用到// $objWriter->save($dir."/demo.xlsx"); //以下為需要用到IE時候設(shè)置// 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;    }

到這一步其實就已經(jīng)成功了95%了。剩下的5%只需要你調(diào)用上面的方法傳入正確的參數(shù)即可

model("Apimodel")->order_outputProjectExcel($info);

這里的$info是你的訂單詳情。必須要做時間篩選,如果不做時間篩選的話 數(shù)據(jù)量一多,你的系統(tǒng)會崩的。

這里的for循環(huán)就是你傳入的 $info。 如果說你的 $info 是空的 那么導(dǎo)出的excel打開的時候還會出現(xiàn)

for ($i=0;$i<$dataCount;$i++){    $k = $k + 1;    $order=$i+1;    $objSheet->setCellValue("A" . $k, $info[$i]["id"])->setCellValue("B" . $k, $info[$i]["goods_image"])->setCellValue("C" . $k, $info[$i]["goods_name"])->setCellValue("D" . $k, $info[$i]["user_num"])->setCellValue("E" . $k, $info[$i]["user_upteam"])->setCellValue("F" . $k, $info[$i]["user_un_upteam"])->setCellValue("G" . $k, $info[$i]["order_id"])->setCellValue("H" . $k, $info[$i]["goods_price"])->setCellValue("I" . $k, $info[$i]["payment"])->setCellValue("J" . $k, $info[$i]["goods_yongjin"])->setCellValue("K" . $k, $info[$i]["user_yongjin"])->setCellValue("L" . $k, $info[$i]["user_up_yongjin"])->setCellValue("M" . $k, $info[$i]["user_un_upyongjin"])->setCellValue("N" . $k, $info[$i]["paymenttime"])->setCellValue("O" . $k, $info[$i]["pay_way_ch"])->setCellValue("P" . $k, $info[$i]["status_ch"]);  }

最后就是這樣的效果

到此這篇關(guān)于PHP實現(xiàn)生成Excel文件并導(dǎo)出的示例詳解的文章就介紹到這了,更多相關(guān)PHP生成導(dǎo)出Excel內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
主站蜘蛛池模板: 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 专业音响设备_舞台音响设备_会议音响工程-首选深圳一禾科技 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 安全,主动,被动,柔性,山体滑坡,sns,钢丝绳,边坡,防护网,护栏网,围栏,栏杆,栅栏,厂家 - 护栏网防护网生产厂家 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 穿线管|波纹穿线管|包塑金属软管|蛇皮管?闵彬专注弱电工程? | 扒渣机厂家_扒渣机价格_矿用扒渣机_铣挖机_撬毛台车_襄阳永力通扒渣机公司 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 高通量组织研磨仪-多样品组织研磨仪-全自动组织研磨仪-研磨者科技(广州)有限公司 | 青岛侦探调查_青岛侦探事务所_青岛调查事务所_青岛婚外情取证-青岛狄仁杰国际侦探公司 | 骨密度仪-骨密度测定仪-超声骨密度仪-骨龄测定仪-天津开发区圣鸿医疗器械有限公司 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 辽宁资质代办_辽宁建筑资质办理_辽宁建筑资质延期升级_辽宁中杭资质代办 | 挨踢网-大家的导航!| 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 金环宇|金环宇电线|金环宇电缆|金环宇电线电缆|深圳市金环宇电线电缆有限公司|金环宇电缆集团 | 江苏农村商业银行招聘网_2024江苏农商行考试指南_江苏农商行校园招聘 | 棉服定制/厂家/公司_棉袄订做/价格/费用-北京圣达信棉服 | 岛津二手液相色谱仪,岛津10A液相,安捷伦二手液相,安捷伦1100液相-杭州森尼欧科学仪器有限公司 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 南京和瑞包装有限公司| 鄂泉泵业官网|(杭州、上海、全国畅销)大流量防汛排涝泵-LW立式排污泵 | 骨龄仪_骨龄检测仪_儿童骨龄测试仪_品牌生产厂家【品源医疗】 | 广东青藤环境科技有限公司-水质检测 | 联系我们老街华纳娱乐公司官网19989979996(客服) | 三效蒸发器_多效蒸发器价格_四效三效蒸发器厂家-青岛康景辉 | 学叉车培训|叉车证报名|叉车查询|叉车证怎么考-工程机械培训网 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 流变仪-热分析联用仪-热膨胀仪厂家-耐驰科学仪器商贸 | 流水线电子称-钰恒-上下限报警电子秤-上海宿衡实业有限公司 | 天津热油泵_管道泵_天津高温热油泵-天津市金丰泰机械泵业有限公司【官方网站】 | 撕碎机,撕破机,双轴破碎机-大件垃圾破碎机厂家 | Jaeaiot捷易科技-英伟达AI显卡模组/GPU整机服务器供应商 | 低噪声电流前置放大器-SR570电流前置放大器-深圳市嘉士达精密仪器有限公司 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 铁艺,仿竹,竹节,护栏,围栏,篱笆,栅栏,栏杆,护栏网,网围栏,厂家 - 河北稳重金属丝网制品有限公司 山东太阳能路灯厂家-庭院灯生产厂家-济南晟启灯饰有限公司 | 海日牌清洗剂-打造带电清洗剂、工业清洗剂等清洗剂国内一线品牌 海外整合营销-独立站营销-社交媒体运营_广州甲壳虫跨境网络服务 |