欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

thinkPHP怎样使用PHPExcel导出网站数据为excel 有大用 有大大用

在对网站数据进行处理时,经常需要将网站中的一些数据导出为execl格式文件,本篇文章将介绍如何在thinkPHP框架开发的网站中利用PHPExcel将所需数据导出为exexl格式的文件。


来自  https://www.cnblogs.com/HoverM/p/6210178.html

工具/原料

  • PHPExcel
  • thinkPHP

方法/步骤

  1. 1

    一、下载PHPExcel包

    thinkPHP怎样使用PHPExcel导出网站数据为excel
    thinkPHP怎样使用PHPExcel导出网站数据为excel
    thinkPHP怎样使用PHPExcel导出网站数据为excel
  2. 2

    二、新建文件夹,命名为PHPExcel,将上面两个文件PHPExcel,PHPExcel.php放到我们新建的PHPExcel文件夹下面;然后将此文件夹放在thinkPHP核心包里面,路径如下:D:\***\你的项目\ThinkPHP\Library\Vendor

    thinkPHP怎样使用PHPExcel导出网站数据为excel
    thinkPHP怎样使用PHPExcel导出网站数据为excel
  3. 3

    三、前端界面代码

    <div  style="margin-left: 100px;margin-top: -33px;">

           <form action="{:U(output)}" enctype="multipart/form-data" method="post" >

            <input type="file" name="photo" />

            <input type="submit" value="导出数据" style="background-color: #337AB7;color: white;">

            </form>

    </div>

    thinkPHP怎样使用PHPExcel导出网站数据为excel
  4. 4

    四、导出表格样式代码

    //商家表格导出模板

        public function exportExcel($expTitle, $expCellName, $expTableData) {

            $xlsTitle = iconv('utf-8', 'gb2312', $expTitle); //文件名称

            $fileName = '网站商家信息表' . date('_YmdHis'); //or $xlsTitle 文件名称可根据自己情况设定

            $cellNum = count($expCellName);

            $dataNum = count($expTableData);

            vendor("PHPExcel.PHPExcel");

            $objPHPExcel = new\PHPExcel();

            $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');

            $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(22);

            $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);

            $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(10);

            $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(15);

            $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

            $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);

            $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);

            $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);

            $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);

            $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(10);

            $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(20);

            $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(20);

            $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(25);

            $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(22);

            $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(12);

            $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(15);

            $objPHPExcel->getActiveSheet(0)->mergeCells('A1:' . $cellName[$cellNum - 1] . '1');

    //合并单元格

            $objPHPExcel->getActiveSheet()->setCellValue('A1', '网站商家信息表')->getStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

            for ($i = 0; $i < $cellNum; $i++) {

                $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);

            }

            // Miscellaneous glyphs, UTF-8

            for ($i = 0; $i < $dataNum; $i++) {

                for ($j = 0; $j < $cellNum; $j++) {

                    $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j] . ($i + 3), " ".$expTableData[$i][$expCellName[$j][0]]);

                }

            }

            ob_end_clean(); //清除缓冲区,避免乱码

  5.         ob_start();  // 好像这一行 加不加无所谓

            header('pragma:public');

            header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle. '.xls"');

            header("Content-Disposition:attachment;filename=$fileName.xls");

    //attachment新窗口打印inline本窗口打印

            $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

            $objWriter->save('php://output');

            exit;

        }

    thinkPHP怎样使用PHPExcel导出网站数据为excel
    thinkPHP怎样使用PHPExcel导出网站数据为excel
  6. 5

    五、导出所需数据代码

    function output($begin=0, $end=0) {//导出商家信息Excel

            $xlsName = "User";

            $xlsCell = array(

                array('userid', '商家id'),

                array('groupid', '商家等级'),

                array('store_name', '店铺名称'),

                array('contact_name', '联系人'),

                array('phone', '手机'),

                array('email', '邮箱'),

                array('activity_count', '活动商品'),

                array('frozen_deposit', '冻结中保证金'),

                array('regdate', '注册时间'),

                array('loginnum', '登录次数'),

                array('lastdate', '最近登录'),

                array('id_number', '身份证号码'),

                array('name', '姓名'),

                array('qq', 'QQ'), );

            $beginToday = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

            $endToday = mktime(0, 0, 0, date('m'), date('d') + 1, date('Y')) - 1;

            if ($begin > 0) { $beginToday = $begin;}

            if ($end > 0) {$endToday = $end;}

            $xlsModel = M('member');

            $xlsData=$xlsModel->query("SELECT m.userid,m.groupid,c.store_name,c.contact_name,m.phone,m.email,c.frozen_deposit,FROM_UNIXTIME(m.regdate) AS regdate,loginnum,FROM_UNIXTIME(m.lastdate) AS lastdate,m.qq FROM xw_member AS m ,xw_member_merchant AS c WHERE m.modelid = 2 AND m.userid = c.userid and (m.lastdate between $beginToday and $endToday) ORDER BY m.userid DESC");

            $dataNum = count($xlsData);

            for ($i = 0; $i < $dataNum; $i++){

                    if ($xlsData[$i][groupid] == '1') {

                        $xlsData[$i][groupid] = '普通商家';

                    } else if ($xlsData[$i][groupid] == '2') {

                        $xlsData[$i][groupid] = '金牌商家';

                    } else if ($xlsData[$i][groupid] == '3') {

                        $xlsData[$i][groupid] = '白金商家';

                    } else if ($xlsData[$i][groupid] == '4') {

                        $xlsData[$i][groupid] = '钻石商家';

                    }

                            $rs=M('member_attesta')->where("userid= '".$xlsData[$i]['userid']."' AND type = 'identity'")->getField('infos');

                            $identity = string2array($rs);

                            $xlsData[$i]['id_number'] = $identity['id_number'];

                            $xlsData[$i]['name'] = $identity['name'];

                            $xlsData[$i]['activity_count']= M('product')->where(array('company_id'=>$xlsData[$i]['userid']))->count();

                }

                      $this->exportExcel($xlsName, $xlsCell, $xlsData);

        }

    }

    thinkPHP怎样使用PHPExcel导出网站数据为excel
    thinkPHP怎样使用PHPExcel导出网站数据为excel
  7. 6

    六、导出数据表格如下

    thinkPHP怎样使用PHPExcel导出网站数据为excel
    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
举报作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。

来自  https://jingyan.baidu.com/article/066074d638992bc3c31cb046.html

首先百度搜索phpexcel  包,放到项目的这个目录下

接下来  是controller里的导出代码 

 




public function expUser(){
   // $p_name = $_POST['order_p_name'];
    $m = M ('order_list');
   // $datas['order_p_name'] = $p_name;
    $data = $m->field('order_id,order_p_name,order_p_price,order_p_username,order_p_tel,order_time')->select();
    foreach ($data as $k => $v)
    {
        $data[$k]['order_time']=$v['order_time']=date('Y-m-d',$v['order_time']);
    }
    //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
    import("Org.Util.PHPExcel");
    import("Org.Util.PHPExcel.Writer.Excel5");
    import("Org.Util.PHPExcel.IOFactory.php");
    $filename="test_excel";
    $headArr=array("编号","名称","价格","姓名","电话","日期");
    $this->getExcel($filename,$headArr,$data);
}

private    function getExcel($fileName,$headArr,$data){
    //对数据进行检验
    if(empty($data) || !is_array($data)){
        die("data must be a array");
    }
    //检查文件名
    if(empty($fileName)){
        exit;
    }
    $date = date("Y_m_d",time());
    $fileName .= "_{$date}.xls";
    //创建PHPExcel对象,注意,不能少了\
    $objPHPExcel = new \PHPExcel();
    $objProps = $objPHPExcel->getProperties();

    //设置表头
    $key = ord("A");
    foreach($headArr as $v){
        $colum = chr($key);
        $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
        $key += 1;
    }
    $column = 2;
    $objActSheet = $objPHPExcel->getActiveSheet();
    foreach($data as $key => $rows){ //行写入
        $span = ord("A");
        foreach($rows as $keyName=>$value){// 列写入
            $j = chr($span);
            $objActSheet->setCellValue($j.$column, $value);
            $span++;
        }
        $column++;
    }
    $fileName = iconv("utf-8", "gb2312", $fileName);
    //重命名表
    // $objPHPExcel->getActiveSheet()->setTitle('test');
    //设置活动单指数到第一个表,所以Excel打开这是第一个表
    
    $objPHPExcel->setActiveSheetIndex(0);
    ob_end_clean();
    ob_start();  
    
    header('Content-Type: application/vnd.ms-excel');
    header("Content-Disposition: attachment;filename=\"$fileName\"");
    header('Cache-Control: max-age=0');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output'); //文件通过浏览器下载
    exit;

}

 



ThinkPHP3.2 + PHPExcel 进行execl文件导出操作

原创 2017年03月10日 16:44:01

本次是进行execl导出实例的讲解,

1、首先下载PHPExcel扩展类 (可以百度   没有的找我要157400661@qq.com


2、在ThinkPHP引入PHPExcel  那么我是放到了Vendor中


3、然后就可以开心的去写控制器方法了

注意要这样写去引用哦 $excel = new \PHPExcel();

因为我是导出excel 先保存到服务器然后再将导出的文件和其他文件一起进行压缩后下载的(文件合并压缩后续我会再写文档介绍) 所以这段代码最后ajax返回的操作可以不用管

如果大家想直接导出后就下载  可以参考最后注释的几行


  1. /** 

  2.      * 真正的导出 

  3.      * @param  array $complain_info 投诉信息结构体 

  4.      * $is_download_mv  是否下载视频 

  5.      * @return [type]                [description] 

  6.      */  

  7.     public function export_complain($complain_info,$is_download_mv)  

  8.     {  

  9.         Vendor('PHPExcel.PHPExcel','','.class.php');  

  10.         //创建对象  

  11.         $excel = new \PHPExcel();  

  12.         $excel->getActiveSheet()->setTitle('投诉列表');  

  13.   

  14.         // 设置单元格高度  

  15.         // 所有单元格默认高度  

  16.         $excel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);  

  17.         // 第一行的默认高度  

  18.         $excel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);  

  19.         // 垂直居中  

  20.         $excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);  

  21.         // 设置水平居中  

  22.         $excel->getActiveSheet()->getDefaultStyle()->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  

  23.   

  24.         //Excel表格式  

  25.         $letter = array('A','B','C','D','E','F','F','G','H','I','J','K','L');  

  26.         //表头数组  

  27.         $tableheader = array('序号','车牌号','车牌颜色','投诉说明','投诉地点','投诉人','投诉时间','投诉人手机号','投诉人微信号','微信昵称','状态','进展','奖励');  

  28.         $tablestyle = array(  

  29.             array('width'=>'5'),  

  30.             array('width'=>'15'),  

  31.             array('width'=>'10'),  

  32.             array('width'=>'40'),  

  33.             array('width'=>'30'),  

  34.             array('width'=>'10'),  

  35.             array('width'=>'15'),  

  36.             array('width'=>'15'),  

  37.             array('width'=>'15'),  

  38.             array('width'=>'15'),  

  39.             array('width'=>'10'),  

  40.             array('width'=>'10'),  

  41.             array('width'=>'10'),  

  42.         );  

  43.   

  44.         // 如果选择视频下载  

  45.         if($is_download_mv){  

  46.             $letter[] = 'M';  

  47.             $tableheader[] = '视频地址(相对路径)';  

  48.             $tablestyle[] = array('width'=>'30');  

  49.         }  

  50.         // id , plate_num,color,msg,place,name,time,phone,weixin,wx_name,status,process  

  51.         //填充表头信息  

  52.         for($i = 0;$i < count($tableheader);$i++) {  

  53.             $excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");  

  54.             $excel->getActiveSheet()->getColumnDimension($letter[$i])->setWidth($tablestyle[$i]['width']);  

  55.         }  

  56.         //填充表格信息  

  57.         for ($i = 2;$i <= count($complain_info) + 1;$i++) {  

  58.             $data = $complain_info[$i - 2];  

  59.             if($is_download_mv){  

  60.                 $this->mv_arr[] = $data['vedio'];  

  61.                 $tmp = explode('/',$data['vedio']);  

  62.                 $tmpurl = array_pop($tmp);  

  63.                 $excel->getActiveSheet()->setCellValue("$letter[13]$i","{$tmpurl}");  

  64.             }  

  65.             $excel->getActiveSheet()->setCellValue("$letter[0]$i","{$data['id']}");  

  66.             $excel->getActiveSheet()->setCellValue("$letter[1]$i","{$data['plate_num']}");  

  67.             $excel->getActiveSheet()->setCellValue("$letter[2]$i","{$data['color_str']}");  

  68.             $excel->getActiveSheet()->setCellValue("$letter[3]$i","{$data['msg']}");  

  69.             $excel->getActiveSheet()->setCellValue("$letter[4]$i","{$data['place']}");  

  70.             $excel->getActiveSheet()->setCellValue("$letter[5]$i","{$data['name']}");  

  71.             $excel->getActiveSheet()->setCellValue("$letter[6]$i","{$data['time']}");  

  72.             $excel->getActiveSheet()->setCellValue("$letter[7]$i","{$data['phone']}");  

  73.             $excel->getActiveSheet()->setCellValue("$letter[8]$i","{$data['weixin']}");  

  74.             $excel->getActiveSheet()->setCellValue("$letter[9]$i","{$data['wx_name']}");  

  75.             $excel->getActiveSheet()->setCellValue("$letter[10]$i","{$data['status_str']}");  

  76.             $excel->getActiveSheet()->setCellValue("$letter[11]$i","{$data['process_str']}");  

  77.             $excel->getActiveSheet()->setCellValue("$letter[12]$i","{$data['gift_send_str']}");  

  78.         }  

  79.   

  80.         //创建Excel输入对象  

  81.         $write = new \PHPExcel_Writer_Excel5($excel);  

  82.         $filename = $this->execl_url.'/report_list_'.date("Y-m-d-H.i.s").'.xls';  

  83.         $write->save($filename);  

  84.   

  85.         // 进行下一步文件压缩  

  86.         if($is_download_mv){  

  87.             $this->mv_arr[] = $filename;  

  88.             $this->filezip();  

  89.         }else{  

  90.             $result['code'] =200;  

  91.             $result['filename'] =$filename;  

  92.             $this->ajaxReturn($result);  

  93.             return true;  

  94.         }  

  95.         echo 0;  

  96. //      直接下载的代码  

  97. //      header("Pragma: public");  

  98. //      header("Expires: 0");  

  99. //      header("Expires: 0");  

  100. //      header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  

  101. //      header("Content-Type:application/force-download");  

  102. //      header("Content-Type:application/vnd.ms-execl");  

  103. //      header("Content-Type:application/octet-stream");  

  104. //      header("Content-Type:application/download");;  

  105. //      header('Content-Disposition:attachment;filename="客栈信息.xls"');  

  106. //      header("Content-Transfer-Encoding:binary");  

  107. //      $write->save('php://output');  

  108.     }  


导出后直接下载代码



  1. //创建Excel输入对象  

  2.      $write = new \PHPExcel_Writer_Excel5($excel);  

  3.      $write->save($filename);  

  4.   

  5.      直接下载的代码  

  6.   header("Pragma: public");  

  7.   header("Expires: 0");  

  8.   header("Expires: 0");  

  9.   header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  

  10.   header("Content-Type:application/force-download");  

  11.   header("Content-Type:application/vnd.ms-execl");  

  12.   header("Content-Type:application/octet-stream");  

  13.   header("Content-Type:application/download");;  

  14.   header('Content-Disposition:attachment;filename="客栈信息.xls"');  

  15.   header("Content-Transfer-Encoding:binary");  

  16.   $write->save('php://output');  




版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/sqc157400661/article/details/61200033

来自  http://blog.csdn.net/sqc157400661/article/details/61200033


hinkphp3.2和phpexcel导出带生成图片完美案例

 
浏览:9254 发布日期:2016/06/28 分类:用法示例关键字: thinkphp3.2 phpexcel
thinkphp3.2和phpexcel导出带生成图片完美案例
新手一枚,接触tp也有一个月了,最近公司要求报表导出要有图片生成,特意花时间研究了下,看事例代码
  1. // 导出exl

  2.     public function look_down(){

  3.         $id = I('get.id');

  4.         $m = M ('offer_goods');

  5.         $where['offer_id'] = $id;

  6.         $data = $m->field('goods_id,goods_sn,goods_name,barcode,goods_type,price')->select();

  7.         

  8.         // 导出Exl

  9.         import("Org.Util.PHPExcel");

  10.         import("Org.Util.PHPExcel.Worksheet.Drawing");

  11.         import("Org.Util.PHPExcel.Writer.Excel2007");

  12.         $objPHPExcel = new \PHPExcel();

  13.         

  14.         $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);

  15.     

  16.         $objActSheet = $objPHPExcel->getActiveSheet();

  17.         

  18.         // 水平居中(位置很重要,建议在最初始位置)

  19.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  20.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  21.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  22.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  23.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  24.         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

  25.         

  26.         $objActSheet->setCellValue('A1', '商品货号');

  27.         $objActSheet->setCellValue('B1', '商品名称');

  28.         $objActSheet->setCellValue('C1', '商品图');

  29.         $objActSheet->setCellValue('D1', '商品条码');

  30.         $objActSheet->setCellValue('E1', '商品属性');

  31.         $objActSheet->setCellValue('F1', '报价(港币)');

  32.         // 设置个表格宽度

  33.         $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);

  34.         $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(80);

  35.         $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);

  36.         $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);

  37.         $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);

  38.         $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);

  39.         

  40.         // 垂直居中

  41.         $objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

  42.         $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

  43.         $objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

  44.         $objPHPExcel->getActiveSheet()->getStyle('E')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

  45.         $objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);

  46.         

  47.         foreach($data as $k=>$v){

  48.             $k +=2;

  49.             $objActSheet->setCellValue('A'.$k, $v['goods_sn']);    

  50.             $objActSheet->setCellValue('B'.$k, $v['goods_name']);    

  51.                 

  52.             

  53.             $img = M('goods')->where('goods_id = '.$v['goods_id'])->field('goods_thumb')->find();

  54.             // 图片生成

  55.             $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();

  56.             $objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']);

  57.             // 设置宽度高度

  58.             $objDrawing[$k]->setHeight(80);//照片高度

  59.             $objDrawing[$k]->setWidth(80); //照片宽度

  60.             /*设置图片要插入的单元格*/

  61.             $objDrawing[$k]->setCoordinates('C'.$k);

  62.             // 图片偏移距离

  63.             $objDrawing[$k]->setOffsetX(12);

  64.             $objDrawing[$k]->setOffsetY(12);

  65.             $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());

  66.             

  67.             // 表格内容

  68.             $objActSheet->setCellValue('D'.$k, $v['barcode']);    

  69.             $objActSheet->setCellValue('E'.$k, $v['goods_type']);    

  70.             $objActSheet->setCellValue('F'.$k, $v['price']);

  71.                 

  72.             // 表格高度

  73.             $objActSheet->getRowDimension($k)->setRowHeight(80);

  74.             

  75.         }

  76.         

  77.         $fileName = '报价表';

  78.         $date = date("Y-m-d",time());

  79.         $fileName .= "_{$date}.xls";

  80.         $fileName = iconv("utf-8", "gb2312", $fileName);

  81.         //重命名表

  82.         // $objPHPExcel->getActiveSheet()->setTitle('test');

  83.         //设置活动单指数到第一个表,所以Excel打开这是第一个表

  84.         $objPHPExcel->setActiveSheetIndex(0);

  85.         header('Content-Type: application/vnd.ms-excel');

  86.         header("Content-Disposition: attachment;filename=\"$fileName\"");

  87.         header('Cache-Control: max-age=0');

  88.         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

  89.         $objWriter->save('php://output'); //文件通过浏览器下载

  90.         // END    

  91.     }

复制代码
注意事项:
1.phpexcel下载地址:http://phpexcel.codeplex.com/

2.把Classes目录下的文件(PHPExcel.php和PHPExcel文件夹),放到ThinkPHP\Library\Org\Util目录下(放到其他目录下也可以,只需要能加载类都没有问题)。并把PHPExcel.php 改成PHPExcel.class.php(这一步很重要,你需要加载的php文件都要改成xxx.class.php才行)

3.手动导入类(请注意"\"符号)
import("Org.Util.PHPExcel");
$objPHPExcel = new \PHPExcel();
(本人试过自动加载类,比较麻烦,因为phpexcel的文件都需要加上“namespace Org\Util;”,所以干脆就选择手动加载类)

4.水平居中,垂直居中,高度 等设置。注意放的位置,如果你放在末尾,那么是下一样生效。放到头部,第一行生效(上面代码是第一行生效,如果放到foreach里面就是下一行生效)。

5.import介绍。import("Org.Util.PHPExcel.Writer.Excel2007"); 文件位置:Org\Util\PHPExcel\Writer\Excel2007.class.php

6.图片地址一定要是本地。
$objDrawing[$k]->setPath('./Upload/'.$img['goods_thumb']); 图片位置:安装目录/Upload/xxx

容易出现的问题: 
1.'class xxx not found' 类导入不成功,可以先在xxx.class.php 放个function ss(){} 然后输出下$xx = new xxx; $xx->ss()输出下看结果。

.....

心得:刚开始做这个的时候,头非常的大,因为压根没做过这个,也没经验。然后,度娘、度娘、... 再用phpexcel先生成一个简单的文本输出;再生成一个简单的图片输出,最后问题和图片结合输出,就有了现在的实例代码。先简单一小步,再一小步,最后一大步,就成了

更新2017-12-23
在生成图片的过程中非常占用内存(毕竟是多图、多数据转换),建议限制下记录条数。
推荐:采用计划任务的方式,在服务器空闲时间(夜间1-2点)去生成文档

thinkphp3.2和phpexcel导入
http://www.thinkphp.cn/code/2124.html

thinkphp3.2和phpexcel导入,出现PHPExcel_RichText object解决办法
http://www.thinkphp.cn/code/2143.html

thinkphp3.2和phpexcel导出带生成图片完美案例
http://www.thinkphp.cn/code/2112.html


来自  http://www.thinkphp.cn/code/2112.html


普通分类: