我发现最近的项目需要导出Excel表的页面非常的多,想来这个也是我们常用的功能了,现在我可以很熟练的导出了,但是记得当时自己第一次导出时还是绕了一些弯路的,那么现在我就来记录下我这次用exshop框架项目下的导出(其实在不同的框架下Excel的导出原理都是差不多的)


前端

  1. <a href="javascript:;" id="export_all" class="coolbg">导出</a>
  2. <script>
  3. //导出数据
  4. $('#export_all').click(function(){
  5. window.open('index.php?app=craft_order&act=export', '_blank');
  6. });
  7. </script>

控制器

  1. // 导出数据
  2. public function export() {
  3. $result = $this->_oaOrderModel->getAllOrderListForManager($this->store_id, $orderSn=null, $buyer_id=null, $buyer_name=null, $consignee=null, $phone=null, $company_name=null, $status=null, $s_time=null, $e_time=null, $page=null, $listRows=null, $execl=true); //这个是获得数据的代码-model里
  4. $orderList = $result['orderList'];
  5. if (!empty($orderList)) {
  6. $j = 1;
  7. $stmt = array();
  8. foreach ($orderList as $val) {
  9. $stmt[$j]['网站ID'] = $val['store_id'];
  10. $stmt[$j]['订单信息'] = $val['order_sn'];
  11. $stmt[$j]['商品信息'] = $val['inventory_sn_count_chinese'];
  12. $stmt[$j]['工艺选择'] = $val['craft_count_chinese'];
  13. $stmt[$j]['商品总数量'] = $val['real_goods_total_count'];
  14. $stmt[$j]['提交日期'] = date("Y-m-d H:i:s",$val['add_time']);
  15. $stmt[$j]['客户名称'] = $val['company_name'];
  16. $stmt[$j]['联系人'] = $val['consignee'];
  17. $stmt[$j]['联系方式'] = $val['phone_mob'];
  18. $stmt[$j]['订单完成率'] = $val['percentage_complete'];
  19. $stmt[$j]['订单状态'] = $val['statusChinese'];
  20. $j++;
  21. }
  22. $current_path = dirname(__FILE__);
  23. $home_path = dirname($current_path);
  24. require_once ROOT_PATH . '/includes/libraries/PHPExcel.php';
  25. require_once ROOT_PATH . '/includes/libraries/PHPExcel/IOFactory.php';
  26. $objPHPExcel = new PHPExcel(); //这个方法自己下载放到公共方法里
  27. $objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
  28. ->setLastModifiedBy("Maarten Balliauw")
  29. ->setTitle("Office 2007 XLSX Test Document")
  30. ->setSubject("Office 2007 XLSX Test Document")
  31. ->setDescription("Document for Office 2007 XLSX, generated using PHP classes.")
  32. ->setKeywords("office 2007 openxml php")
  33. ->setCategory("Test result file");
  34. // 行高
  35. for ($i = 2; $i <= count($stmt); $i++) {
  36. $objPHPExcel->getActiveSheet()->getRowDimension($i)->setRowHeight(22);
  37. }
  38. foreach ($stmt as $fid => $fval) {
  39. if ($fid == 1) {
  40. $key = 0;
  41. foreach ($fval as $title => $first) {
  42. //如果一级标题
  43. $objPHPExcel->getActiveSheet()->setCellValue(chr($key + 65) . '1', $title);
  44. $objPHPExcel->getActiveSheet()->getStyle(chr($key + 65) . '1')->getFont()->setBold(true); // 加粗
  45. $key ++;
  46. }
  47. }
  48. $cid = 0;
  49. $row_id = $fid + 1;
  50. foreach ($fval as $cval) {
  51. $objPHPExcel->getActiveSheet()->setCellValue(chr($cid + 65) . (string) ($row_id), $cval);
  52. $cid++;
  53. }
  54. }
  55. $objPHPExcel->setActiveSheetIndex(0);
  56. $objPHPExcel->getActiveSheet()->setTitle('Excel表');
  57. $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  58. //$objWriter->save('订单列表详细.xls');
  59. //输出到浏览器
  60. header("Content-Type: application/force-download");
  61. header("Content-Type: application/octet-stream");
  62. header("Content-Type: application/download");
  63. header('Content-Disposition:inline;filename="订单列表.xls"');
  64. header("Content-Transfer-Encoding: binary");
  65. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  66. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  67. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  68. header("Pragma: no-cache");
  69. $objWriter->save('php://output');
  70. }
  71. }
  72. ```
  73. ***注意:PHPExcel(); //这个方法自己下载放到公共方法里***
  74. >成果图
  75. ![](https://images2018.cnblogs.com/blog/1472033/201808/1472033-20180828174824134-388395905.png)
  76. ![](https://images2018.cnblogs.com/blog/1472033/201808/1472033-20180828174840504-957877917.png)
  77. ![](https://images2018.cnblogs.com/blog/1472033/201808/1472033-20180828174852565-2111504326.png)
  78. ---
  79. >心得
  80. *有时候遇到这些问题可以多思考,多看看它的原理,原理理解了下次做其它的也是会的,但最重要的是要懂得做记录,我们的记忆并没有想象的那么好*
  81. ***注:文章来源雨中笑记录实习期遇到的问题与心得,转载请申明原文***

PHP导出数据到表格的实例的更多相关文章

  1. 导出数据到表格PHP

    导出数据到表格 public function excel(){ $filename = '导出表格'; $header = ['编号','名称']; $index = ['id','name']; ...

  2. Easyui设置动态表格,动态导出数据实例,附Dome

    最近碰到一个需求,需要提供一个弹出页面选择列表页面需要显示的列,页面确认之后需要修改列表页面显示的表格,导出的数据也需要同步变化. 下面直接上代码 1.设置需要显示的列columus为全局对象,用于子 ...

  3. Easyui设置动态表格,动态导出数据实例,附Demo

    最近开发的过程中碰到一个客户提出的需求,一个指定的页面导出需要提供一个弹出页面选择列表页面需要显示的列,页面确认之后需要修改列表页面显示的表格,导出的数据也需要同步变化. 总结一下可以称为一个列表数据 ...

  4. 数据库数据怎样导出成Excle表格或Word文档?

    数据导出:将数据库的数据导出成Excel工作表或Word文档 方法:将一个泛型集合导出出去 主要使用: SaveFileDialog StreamWriter 导出代码: private void b ...

  5. ASP.NET导出数据到Excel 实例介绍

    ASP.NET导出数据到Excel  该方法只是把asp.net页面保存成html页面只是把后缀改为xlc不过excel可以读取,接下连我看看还有别的方式能导出数据,并利用模版生成. 下面是代码 新建 ...

  6. asp.net数据导出到excel表格,并设置表格样式

    1.首先在项目中添加引用

  7. MySQL导出数据,并转存到Excel表格中

    从数据库中导出数据的方法,这里就不提了,网上有很多方法,如果闲麻烦,可以看一下这个:mysql导出数据 其实使用最简单的下面这个语句: mysql > select * from demo in ...

  8. 导出数据到EXL表格中

    项目使用的是SSI框架,通过struts访问到action xml文件: <action name="fabAttributedaochu" class="com. ...

  9. 实现数据导出为.csv表格

    数据导出实现步骤: 1.查找出要导出的数据,整理为二维数组. 2.定义导出表格的字段 3.将整理的二维数组按导出表格定义的字段重新整理. 4.将整理的二维数组写入服务器中已有的一个.csv文件. 5. ...

随机推荐

  1. python 多线程效果演示

    多线程演示 不使用多线程的情况 import threading import time def run(n): print("task ",n) time.sleep(2) ru ...

  2. SmartUpload控件 中文乱码问题解决办法

    (乱码一般是三码不统一,但是当我们使用插件的时候,我们页面,后台,还有插件之间的转码不一定统一,导致了乱码这一问题) 首先,SmartUpload 的使用网上多的很,在这里就不在赘述,主要解决为什么乱 ...

  3. 关于scheduleAtFixedRate方法与scheduleWithFixedDelay的使用

    一.scheduleAtFixedRate方法 该方法是ScheduledExecutorService中的方法,用来实现周期性执行给定的任务,public ScheduledFuture<?& ...

  4. February 24 2017 Week 8 Friday

    If you fail, don't forget to learn your lesson. 如果你失败了,千万别忘了汲取教训. Frankly speaking, it is easy to ta ...

  5. 初识Scrum

    团队作业起步 一.团队 队名:想吃蛋炒饭 成员: 许俊杰 肖豪雄 王重和 罗艺璇 曾舒妮 也许是我们队长的人的博客:许俊杰的博客 二.Scrum学习心得 Scrum是迭代式增量软件开发过程,通常用于敏 ...

  6. SAP订单编排和流程增强概述

    SAP产品里的订单处理,无论是On-Premises解决方案还是云产品,我认为归根到底可以概括成四个字:订单编排,包含两个层次的内容: 1. 单个订单通过业务流程或者工作流驱动的状态迁移: 2. 多种 ...

  7. 抓取android系统日志_记录一次定位app闪退故障

    在测试android客户端兼容性时,发现app闪退,上海的小伙伴需要闪退时的系统日志:故把快生锈的adb知识拿出来show一把: 1.下载adb工具包(adb的全称为Android Debug Bri ...

  8. 前端开发css禁止选中文本

    在我们日常的Java web前端开发的过程中呢,程序员们会遇到各种各样的要求,所以不每天学的东西感觉自己都退步了,都更不上时代的发展了. 每天应对各种需求,每天活在疑问中就是我们程序员的真是写照.但我 ...

  9. ArcGIS Server 10 Java 版的Rest服务的部署方法

    使用ArcGIS Server 10 Java版发布GIS服务,当使用ArcGIS Manager创建好服务后,然后打开“ArcGIS Services Directory”的链接时发现网页报出了找不 ...

  10. 【[USACO16OPEN]262144】

    发现这个数列的范围特别大但是值域的范围特别小 于是可以大胆猜测这道题值域肯定需要开到状态里去 又发现\(262144=2^{18}\)这个暗示非常明显啊,暗示这道题跟二进制有关系 其实也没什么关系 设 ...