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数据导出相关推荐

  1. Excel数据导出图片

    表格数据导出图片 pom.xml引入Spire配置 <!-- Excel转换工具 参考 https://www.e-iceblue.cn/licensing/install-spirepdf-f ...

  2. xlsxwriter进度条php,PHP导出Excel数据导出,前端进度条实现方式

    效果如上,结合layer组件以及ajax分页实现,具体代码如下 前端代码 用户数据导出 // 执行事件 function exportData() { var loading = layer.load ...

  3. Dcat-Admin自定义Excel数据导出

    dact-admin框架支持导出 csv. xlsx 和 ods 等格式文件,在控制器内grid−>export()−>titles(grid->export()->title ...

  4. springboot新手项目从零开始搭建,涉及excel数据导出和邮箱发送(上)

    项目创建 idea点击New Project 创建一个新项目 左上角打开点击File打开设置 maven设置 这样 我们的项目就创建完毕了 点开左边的pom文档 将提供的依赖导入 我之前就存在一个冲突 ...

  5. 分分钟搞定 Excel 数据导出

    1. 概览 数据导出是日常开发的常见功能,及将数据导出为Excel并提供下载.Java 生态存在大量的 Excel 操作类库,基于这些类库便可完成相关功能.这样,大量繁杂.无意义的代码耗费着宝贵的人力 ...

  6. mac r 导出csv文件_mac系统中的Excel数据导出

    最近自己正在练习写一个类似通讯录的App.所有联系人的通讯信息存在一个Excel的文件当中,如下图所示 Snip20160903_1.png 如果要在iOS中使用上面的数据,就需要将Excel中的数据 ...

  7. java使用poi的excel数据导出及线上预览

    工作中经常会遇到需要从数据库中获取数据,整理后导出数据到excel中提供其他人员下载或者查看,整体功能并不复杂,今天提供一个基于poi工具+永中云预览的excel通用导出在线查看的方法 maven依赖 ...

  8. java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...

    今天在java中使用jxl导出数据到excel工作表的时候,无论是在线直接打开还是保存到本地再打开,都会提示下面的错误信息: "Excel在'excel.xls'中发现不可读取的内容.是否恢 ...

  9. springboot整合jett实现模板excel数据导出

    一 jett的介绍 1.1 介绍 jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具. 1.2 使用方式 1.使用${}来标识我们需要填充的数据 2.使用<jt>&l ...

  10. EasyExcel实现Mysql数据库Excel数据导出

    1.实现效果 2.项目使用到的技术 1.springboot框架 2.Mysql数据库 3.Mybatis-plus 4.EasyExcel 5.lombok 6.servlet 3.数据库设计 us ...

最新文章

  1. 分享一个OTA测试服务器,可以用来测试esp8266的http update功能
  2. 最简单人工智能python_Python人工智能之路 - 第四篇 : jieba gensim 最好别分家之最简单的相似度实现...
  3. OpenMP 线程化(Threading)基础(1)--并行计算简介
  4. Day11多态部分-3
  5. 手把手教你研发属于自己的智能无人机
  6. Oracle Hint(提示)与常用方法
  7. python中大于0的元素全部转化为1,小于0的元素全部转化为0的代码
  8. linux db2下载地址,请置顶:DB2 Developer Workbench下载地址
  9. 伍德里奇计量经济学第六版第七章计算机答案,伍德里奇计量经济学第六版答案Appendix-E...
  10. LMS自适应滤波的MATLAB实现——实例仿真
  11. 网页怎么看不到css,怎么查看网页的CSS代码?如何阅读?
  12. 2019426 SPSS入门学习
  13. 计算机网络应用班级口号霸气押韵,跑操口号大全(精选50句)
  14. 网易蓝牙耳机怎么切换双耳_2020双十一蓝牙耳机怎么选?有哪些便宜又好用的蓝牙耳机?有哪些适合学生党的蓝牙耳机?《选购指南》...
  15. echarts+高德地图设置卫星图层
  16. 你需要的导航网站,这里都有
  17. Java101班1组作业完成情况
  18. Java父子关系list转树结构加树的关键字搜索
  19. 电脑重装系统后鼠标动不了该怎么解决
  20. 【中级软考—软件设计师】1计算机组成与体系结构1.2校验码【***】:1.2.3海明校验码总结梳理

热门文章

  1. MSSQL为单独数据库创建登录账户
  2. 【腾讯内部干货分享】分析Dalvik字节码进行减包优化
  3. 相克军_Oracle体系_随堂笔记011-事物
  4. 百度2013校园招聘移动软件研发工程师笔试题(一)
  5. java自定义异常和throw、throws的使用
  6. django-rest-framework-jwt的使用
  7. android 教程实例系列
  8. VS中添加新项 数据选项卡下没有ADO.NET实体数据模型解决方案
  9. android hook 框架 ADBI 如何实现so注入
  10. Android Touch 事件的分发和消费机制