php excel数据导出
2019独角兽企业重金招聘Python工程师标准>>>
一般的数据量。
导出excel 例子代码如下,主要思路是mysql 读取数据到php 变量保存,整理成excel 开头格式的字符串,写入文件,保存为 xxx.csv 文件, excel 文件的特性,必须 是GBK, 使用 iconv 转义 字符编码 iconv("utf-8","GBK//TRANSLIT",$csvStr); A 如果内容少 excel 内容直接 告知文件头信息,然后 header("Content-type:text/csv"); header("Content-Disposition:attachment;filename=".$fileNameCsv); echo 出来就可以。 记得需要exit。断掉。
B 文件数据比较多,需要分页获取数据,写入 文件,然后header('Location://http://xxx.xxx.xxx/xx.csv'); 分页是否截至,需要 do{}while(); 如果是多台服务器,那么需要借助 redis key ,存储 文件名,还有状态 (0,没有,1有文件了。过期时间为一天),然后数据就可以不用担心判断不出来 ,是否已经后台生成了。 这个时候定时脚本没3分钟执行一次,避免多任务堆积,吃掉内存,服务挂机。使用 exec('ps -efH|grep "'.basename(FILE).'"', $output); if(count($output) > 3) { //类似守护进程,保证只运行1个此进程 print_r($output); exit; } 判断当前是否已经执行过,需要等待上次执行后,这次才能执行。这个程序导出 23w ,数据大概是 1小时。业务不需要太准确数据,延时几小时可以接受。当键值24小时过期,那么通过键值判断是否已经生成问见我,新文件替换老文件
然后下载文件
public function crontExportExcel(){global $redis_obj;$saveCsv = F('saveCsv');$xml = '';$key = 'ORDER:exportExcel';$dataArr = json_decode($redis_obj->rPop($key), true);if(!$dataArr){echo __FILE__.' LINE:'.__LINE__.'; dataArr is empty!'.PHP_EOL;return true;}$saveCsv->crontInit(WEB_PATH.'html/orderExcel/exportExcelGeneral/', $dataArr['exceltype'], $dataArr['ostatus'], $dataArr['otype'], $dataArr['userId']);$conditions = json_decode($dataArr['conditions'], true);$userCnname = $dataArr['userCnname'];$shipOrderList = M("Order")->getOrderList($conditions,1,2);M('Order')->clearReadDB();if(empty($shipOrderList)){$statusStr = '没有数据!';echo '<script language="javascript">alert("'.$statusStr.'");history.back();</script>';exit;}$shipOrderListSku = $this->getfullOrderSkuInfo($shipOrderList);############################基础数据##########################################$accounts = $this->getAccountList();//账号数组$carriers = $this->getCarrierList();//运输方式数组$AbbToNames = getCarrierNameByAbb();$channels = $this->getChannelLists();//渠道数组$users = $this->getUserList();//用户数组$stores = array(1=>"赛维网络");F('order');/*$fileName = "Files_FHQD" . date ( "Y-m-d_H_i_s" ) . ".xls";$excel = new ExportDataExcel ( 'browser', $fileName );$excel->initialize();*///发柜目的仓库,订单号,发柜清单号、发柜时间、SKU、数量、对应SKU销售单价、销售总金额(订单总金额),币种;$cellData = array('A' =>'编号','S' =>"订单编号",'S1' =>"是否拆分",'B' =>'日期','C' =>'ebay store','D' =>'交易号','E' =>'客户ID','F' =>'料号','F0' =>'实际库存','F1' =>'组合料号','F2' =>'产品状态','G' =>'仓位','H' =>'价格','I' =>'运费','J' =>'数量','K' =>'国家','L' =>'包裹总价值','M' =>'币种','N' =>"包装员",'O' =>"挂号条码",'P' =>"重量",'Q' =>"邮费",'R' =>"运输方式",'T' =>"客户邮箱",'U' =>"同步时间",'V' =>"退回时间",'W' =>"城市",'X' =>"县/洲",'Y' =>"街道",'AA' =>"邮编",'AB' =>"手机号",'AC' =>"电话",);$spuStatus = array("1" =>'在线',"2" =>'停售',"3" =>'暂时停售',"4" =>'部分侵权-ebay',"5" =>'部分侵权-B2B',"6" =>'部分侵权-其他平台',"51" =>'PK产品',"101" =>'料号转化');$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xmlHead = iconv("utf-8","GBK//TRANSLIT",$csvStr);$saveCsv->saveCsv($xmlHead);$numIndex = 1;$usoverseaseObjc = F('skudailyinfooversease');$i = 1;$shipOrderList = [];do{$shipOrderList = M("Order")->getOrderList($conditions,$i,500);if(empty($shipOrderList)){continue;}$i++;$xml = '';foreach ( $shipOrderList as $key => $value ) { // key代表最外层的维数/** $value分别有7个对应的键分别为* order订单表头数据记录* orderExtension//订单表扩展数据记录* orderUserInfo//订单表中客户的数据记录* orderWarehouse//物料对订单进行操作的数据记录* orderNote //订单的备注(销售人员添加)记录* orderTracknumber//订单的追踪号记录* orderDetail //订单明细记录*/$orderData = $value['order']; // 订单表头数据记录,为一维数组$orderExtenData = $value['orderExtension']; // 扩展表头数据记录,为一维数组$orderUserInfoData = $value['orderUserInfo']; // 订单客户数据记录,为一维数组$orderWhInfoData = $value['orderWarehouse']; // 物料对订单进行操作的数据记录,为一维数组$orderNote = $value['orderNote']; // 订单备注记录,二维数组$orderTracknumber = $value['orderTracknumber']; // 订单跟踪号,一维数组$orderDetail = $value['orderDetail']; // 订单明细记录,三维数组$orderId = $orderData['id']; // ****订单编号 $ebay_id$is_split = $orderData['isSplit'] == 2 ? "是" :"否"; // ****订单编号 $ebay_id$accountId = $orderData['accountId'];$platformId = $orderData['platformId'];$accountName = $accounts[$accountId];$orderStore = $orderData['orderStore'];$recordNumber = $orderData['recordNumber'];$paymentTime = date("Y-m-d H:i:s",$orderData['paymentTime']);$actualTotal = $orderData['actualTotal'];$calcWeight = $orderData['calcWeight'];$calcShipping = $orderData['calcShipping'];$transportId = $orderData['transportId'];$orderType = $orderData['orderType'];//获取城市相关信息$countryName = $orderUserInfoData['countryName'];$city = $orderUserInfoData['city'];$state = $orderUserInfoData['state'];$address1 = $orderUserInfoData['address1'];$zipCode = $orderUserInfoData['zipCode'];$mobilePhone = $orderUserInfoData['mobilePhone'];$phone = $orderUserInfoData['phone'];$orderAddTime = $orderData['orderAddTime'];$orderAddTime = date("Y-m-d H:i:s",$orderAddTime);$operateTime = "";if($orderType == 232 ){$whData = M('Order')->getAllData("om_unshipped_order_wh","*"," omOrderId=$orderId and orderStatus=232 ");$operateTime = $whData[0]['operateTime'];$operateTime = empty($operateTime) ? "" : date("Y-m-d H:i:s",$operateTime);}$usoverseaseObjc = F('skudailyinfooversease');$carriername = $carriers[$transportId];if(in_array($accountId,array(591,592,593))){ //独立商城特殊处理$transportId = $orderData['ORtransport'];$carriername = $AbbToNames[$transportId ];}if($platformId == 11){$transportId = M("Order")->getCalOrderTransportId($orderId );$carriername = $carriers[$transportId];}$orderTracknumber = isset($value['orderTracknumber']) ? $value['orderTracknumber'] : array();$tracknumber = isset($orderTracknumber[0]['tracknumber']) ? "'".$orderTracknumber[0]['tracknumber']: "无";$orderUserInfo = $value['orderUserInfo'];$userId = $orderUserInfo['username'];$platformUsername = $orderUserInfo['platformUsername'];$countryName = $orderUserInfo['countryName'];$currency = $orderUserInfo['currency'];$email = hideEmailStr($orderUserInfo['email']);$cellData = array("A" => "","S" => $orderId,"S1" => $is_split,"B" => $paymentTime,"C" => $accountName,"D" => $recordNumber,"E" => $platformUsername,"F" => "","F0" => '',"F1" => "","F2" => "","G" => "",//仓位"H" => "","I" => "","J" => "","K" => $countryName,"L" => $actualTotal,"M" => $currency,"N" => "",//包装员"O" => $tracknumber,"P" => $calcWeight,//实际重量"Q" => $calcShipping,//时际运费"R" => $carriername,"T" => $email,//加*号"U" => $orderAddTime,"V" => $operateTime,"W" => $city,"X" => $state,"Y" => $address1,"Z" => $zipCode,"Z1" => $mobilePhone,"Z2" => $phone,);$orderDetails = $value['orderDetail'];$detailNum = count($orderDetails);if($detailNum<=1){$orderDetail = array_values($orderDetails);$orderDetail = $orderDetail[0]['orderDetail'];$sku = $orderDetail['sku'];$amount = $orderDetail['amount'];$itemPrice = $orderDetail['itemPrice'];$shippingFee = $orderDetail['shippingFee'];$skuinfos = $shipOrderListSku[$sku];$skuinfo = isset($skuinfos['skuInfo']) ? $skuinfos['skuInfo'] : array() ;if(!empty($skuinfo)){foreach ($skuinfo as $truesku => $trueskuInfo) {//真实sku信息$goodsStatus = $trueskuInfo['skuDetail']['goodsStatus'];//商品状态 1.在线 2.停售 3.暂时停售 4.部分侵权-ebay 5.部分侵权-B2B 6.部分侵权-其他平台,51.PK产品,101,料号转化。默认为1,在线if(!empty($orderStore)){//获取实际库存//这个地方改成从缓存获取$keyConfig = array(1=> "SkuData:info:",22=> "SkuData:info:",4=> "us01_overseaseSkuData:info:",15=> "de01_15_overseaseSkuData:info:",16=> "us01_16_overseaseSkuData:info:",20=> "uk01_20_overseaseSkuData:info:",21=> "jp01_21_overseaseSkuData:info:",25=> "us01_25_overseaseSkuData:info:",26=> "us01_26_overseaseSkuData:info:",);$actualStockCount = 0;if(array_key_exists($orderStore,$keyConfig)){$this_key = $keyConfig[$orderStore];$this_key .= $truesku;global $redis_obj;$stockInfo = $redis_obj->get($this_key);if(!empty($stockInfo)){$stockInfo = json_decode($stockInfo,true);if(in_array($orderStore,array(1))){$actualStockCount = $stockInfo["stock_qty_shenzhen"];}elseif(in_array($orderStore,array(22))){$actualStockCount = $stockInfo["stock_qty_dongguan"];}else{$actualStockCount = $stockInfo["stock_qty"];}}}}$cellData['F0'] = $actualStockCount;$cellData['F2'] = $spuStatus[$goodsStatus];$cellData['F'] = $truesku;if($sku!=$truesku){$cellData['F1'] = $sku;}$cellData['H'] = $itemPrice;$cellData['I'] = $shippingFee;$cellData['J'] = $amount;if(count($skuinfo)>1){$cellData['A'] = "";$cellData = array_map("html_entity_decode",$cellData);//$excel->addRow($cellData);$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xml .= iconv("utf-8","GBK//TRANSLIT",$csvStr);$csvStr = "";}else{$cellData['A'] = $numIndex;$cellData = array_map("html_entity_decode",$cellData);//$excel->addRow($cellData);$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xml .= iconv("utf-8","GBK//TRANSLIT",$csvStr);$csvStr = "";$numIndex++;}}}else{$cellData['F'] = $sku;$cellData['F1'] = $sku;$cellData['H'] = $itemPrice;$cellData['I'] = $shippingFee;$cellData['J'] = $amount;$cellData['A'] = $numIndex;$cellData = array_map("html_entity_decode",$cellData);$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xml .= iconv("utf-8","GBK//TRANSLIT",$csvStr);$csvStr = "";$numIndex++;}unset($orderDetail);}else{//$orderDetailNE = array_values($orderDetails);//$orderDetailArr = $orderDetailNE['orderDetail'];$totalMoney = 0;$totalShipFee = 0;$totalamount = 0;$cellDatasSplilts = array();foreach($orderDetails as $orderDetail){$sku = $orderDetail['orderDetail']['sku'];$amount = $orderDetail['orderDetail']['amount'];$totalamount += $amount;$itemPrice = $orderDetail['orderDetail']['itemPrice'];$totalMoney += $amount*$itemPrice;$shippingFee = $orderDetail['orderDetail']['shippingFee'];$totalShipFee += $shippingFee;$skuinfos = $shipOrderListSku[$sku];$skuinfo = isset($skuinfos['skuInfo']) ? $skuinfos['skuInfo'] : array() ;if(!empty($skuinfo)){foreach ($skuinfo as $truesku => $trueskuInfo) {//真实sku信息$cellData['F'] = $truesku;//$skuShippedInfo = M('Order')->GetSkuDailystatus($truesku);//$actualStockCount = $skuShippedInfo[0]['actualStockCount'];//实际库存//这个地方改成从缓存获取$keyConfig = array(1=> "SkuData:info:",22=> "SkuData:info:",4=> "us01_overseaseSkuData:info:",15=> "de01_15_overseaseSkuData:info:",16=> "us01_16_overseaseSkuData:info:",20=> "uk01_20_overseaseSkuData:info:",21=> "jp01_21_overseaseSkuData:info:",25=> "us01_25_overseaseSkuData:info:",26=> "us01_26_overseaseSkuData:info:",);$actualStockCount = 0;if(array_key_exists($orderStore,$keyConfig)){$this_key = $keyConfig[$orderStore];$this_key .= $truesku;$stockInfo = $redis_obj->get($this_key);if(!empty($stockInfo)){$stockInfo = json_decode($stockInfo,true);if(in_array($orderStore,array(1))){$actualStockCount = $stockInfo["stock_qty_shenzhen"];}elseif(in_array($orderStore,array(22))){$actualStockCount = $stockInfo["stock_qty_dongguan"];}else{$actualStockCount = $stockInfo["stock_qty"];}}}$goodsStatus = $trueskuInfo['skuDetail']['goodsStatus'];//商品状态 1.在线 2.停售 3.暂时停售 4.部分侵权-ebay 5.部分侵权-B2B 6.部分侵权-其他平台,51.PK产品,101,料号转化。默认为1,在线$cellData['F0'] = $actualStockCount;$cellData['F2'] = $spuStatus[$goodsStatus];if($sku!=$truesku){$cellData['F1'] = $sku;}$cellData['H'] = $itemPrice;$cellData['I'] = $shippingFee;$cellData['J'] = $amount;$cellData['A'] = "";$cellDatasSplilts[]=$cellData;}}else{$cellData['F'] = $sku;$cellData['F1'] = $sku;$cellData['H'] = $itemPrice;$cellData['I'] = $shippingFee;$cellData['J'] = $amount;$cellData['A'] = "";$cellDatasSplilts[]=$cellData;}}$cellData['F'] = "无";$cellData['F1'] = "无";$cellData['F2'] = '';$cellData['H'] = "";$cellData['I'] = "";$cellData['J'] = "";$cellData['A'] = $numIndex;$numIndex++;$cellData = array_map("html_entity_decode",$cellData);$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xml .= iconv("utf-8","GBK//TRANSLIT",$csvStr);$csvStr = "";foreach ($cellDatasSplilts as $cellData) {$csvStr = '"'.implode('","', $cellData).'"'.PHP_EOL;$xml .= iconv("utf-8","GBK//TRANSLIT",$csvStr);$csvStr = "";}}//end of else; */}//end of foreach orderLists$status = $saveCsv->saveCsv($xml, 1);}while(!empty($shipOrderList));$fileKey = $saveCsv->getFileKey();$redis_obj->set($fileKey, 1, 90000);$title = '订单系统小包缺货excel 下载通知邮件';$contact = '你好,'.PHP_EOL;$contact .= 'time: '.date('Y-m-d H:i').'. 订单系统小包缺货excel 已经同步完成,请回到页面点击下载';$emailResult = M("InterfaceNotice")->sendMessageByNoticeSys($contact, $title, $userCnname);if ($emailResult['errCode'] == 2013) {echo date('Y-m-d H:i')."订单系统小包缺货excel 下载通知邮件已经发出", PHP_EOL;}return $status;}
转载于:https://my.oschina.net/u/2280651/blog/1628780
php excel数据导出相关推荐
- Excel数据导出图片
表格数据导出图片 pom.xml引入Spire配置 <!-- Excel转换工具 参考 https://www.e-iceblue.cn/licensing/install-spirepdf-f ...
- xlsxwriter进度条php,PHP导出Excel数据导出,前端进度条实现方式
效果如上,结合layer组件以及ajax分页实现,具体代码如下 前端代码 用户数据导出 // 执行事件 function exportData() { var loading = layer.load ...
- Dcat-Admin自定义Excel数据导出
dact-admin框架支持导出 csv. xlsx 和 ods 等格式文件,在控制器内grid−>export()−>titles(grid->export()->title ...
- springboot新手项目从零开始搭建,涉及excel数据导出和邮箱发送(上)
项目创建 idea点击New Project 创建一个新项目 左上角打开点击File打开设置 maven设置 这样 我们的项目就创建完毕了 点开左边的pom文档 将提供的依赖导入 我之前就存在一个冲突 ...
- 分分钟搞定 Excel 数据导出
1. 概览 数据导出是日常开发的常见功能,及将数据导出为Excel并提供下载.Java 生态存在大量的 Excel 操作类库,基于这些类库便可完成相关功能.这样,大量繁杂.无意义的代码耗费着宝贵的人力 ...
- mac r 导出csv文件_mac系统中的Excel数据导出
最近自己正在练习写一个类似通讯录的App.所有联系人的通讯信息存在一个Excel的文件当中,如下图所示 Snip20160903_1.png 如果要在iOS中使用上面的数据,就需要将Excel中的数据 ...
- java使用poi的excel数据导出及线上预览
工作中经常会遇到需要从数据库中获取数据,整理后导出数据到excel中提供其他人员下载或者查看,整体功能并不复杂,今天提供一个基于poi工具+永中云预览的excel通用导出在线查看的方法 maven依赖 ...
- java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...
今天在java中使用jxl导出数据到excel工作表的时候,无论是在线直接打开还是保存到本地再打开,都会提示下面的错误信息: "Excel在'excel.xls'中发现不可读取的内容.是否恢 ...
- springboot整合jett实现模板excel数据导出
一 jett的介绍 1.1 介绍 jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具. 1.2 使用方式 1.使用${}来标识我们需要填充的数据 2.使用<jt>&l ...
- EasyExcel实现Mysql数据库Excel数据导出
1.实现效果 2.项目使用到的技术 1.springboot框架 2.Mysql数据库 3.Mybatis-plus 4.EasyExcel 5.lombok 6.servlet 3.数据库设计 us ...
最新文章
- 分享一个OTA测试服务器,可以用来测试esp8266的http update功能
- 最简单人工智能python_Python人工智能之路 - 第四篇 : jieba gensim 最好别分家之最简单的相似度实现...
- OpenMP 线程化(Threading)基础(1)--并行计算简介
- Day11多态部分-3
- 手把手教你研发属于自己的智能无人机
- Oracle Hint(提示)与常用方法
- python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
- linux db2下载地址,请置顶:DB2 Developer Workbench下载地址
- 伍德里奇计量经济学第六版第七章计算机答案,伍德里奇计量经济学第六版答案Appendix-E...
- LMS自适应滤波的MATLAB实现——实例仿真
- 网页怎么看不到css,怎么查看网页的CSS代码?如何阅读?
- 2019426 SPSS入门学习
- 计算机网络应用班级口号霸气押韵,跑操口号大全(精选50句)
- 网易蓝牙耳机怎么切换双耳_2020双十一蓝牙耳机怎么选?有哪些便宜又好用的蓝牙耳机?有哪些适合学生党的蓝牙耳机?《选购指南》...
- echarts+高德地图设置卫星图层
- 你需要的导航网站,这里都有
- Java101班1组作业完成情况
- Java父子关系list转树结构加树的关键字搜索
- 电脑重装系统后鼠标动不了该怎么解决
- 【中级软考—软件设计师】1计算机组成与体系结构1.2校验码【***】:1.2.3海明校验码总结梳理