IT技术博客网IT技术博客网IT技术博客网

当前位置: 首页 > php开发

Thinkphp5使用PHPExcel导出数据生成excel表格的方法

第一步下载PHPExcel类 命名为PHPExcel 放到vendor下


PHPExcel文件和控制器的完整代码可进网盘进行下载

链接:https://pan.baidu.com/s/1ShWpmC2VTnWSUgdrqz4BtA?pwd=spyb 

提取码:spyb


控制代码,需对应数据字段进行修改

public function excel(){
	  	header('Content-Type:text/html; charset=utf-8');//转换一下格式  避免乱码
       $xlsData = db('orders')->select();
					
       //dump($xlsData);die;
        Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的
        Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');
        Vendor('PHPExcel.PHPExcel.Writer.Excel2007');
        $objExcel = new \PHPExcel();
        //set document Property
        $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
 
        $objActSheet = $objExcel->getActiveSheet();
        $key = ord("A");
        $letter =explode(',',"A,B,C,D,E,F,G,H,I,J");
         //填充表头信息 
        $arrHeader = array('订单号','商品名称','数量','姓名','电话','支付状态','应收款','下单时间');
       
        $lenth =  count($arrHeader);
        for($i = 0;$i < $lenth;$i++) {
            $objActSheet->setCellValue("$letter[$i]1","$arrHeader[$i]");
        };
        //填充表格信息
		//0,未支付,1待确认,2已支付,3已完成
        foreach($xlsData as $k=>$v){
            $k +=2;
            $objActSheet->setCellValue('A'.$k,$v['ordersn']);
            $objActSheet->setCellValue('B'.$k, $v['gtitle']);
            $objActSheet->setCellValue('C'.$k, $v['totalnum']);
            $objActSheet->setCellValue('D'.$k, $v['realname']);
            $objActSheet->setCellValue('E'.$k, $v['mobile']);
			if($v['ostatus'] == 0){
				$paystyle = '未支付';
			}elseif($v['ostatus'] == 1){
				$paystyle = '待确认';
			}elseif($v['ostatus'] == 2){
				$paystyle = '已支付';
			}elseif($v['ostatus'] == 3){
				$paystyle = '已完成';
			}
            $objActSheet->setCellValue('F'.$k, $paystyle);
            $objActSheet->setCellValue('G'.$k, $v['price']);
            $objActSheet->setCellValue('H'.$k, date('Y-m-d H:i:s',$v['ocreatetime']));
            // 表格高度
            $objActSheet->getRowDimension($k)->setRowHeight(20);
        }
 
        $width = array(10,15,20,25,30);
        //设置表格的宽度
        $objActSheet->getColumnDimension('A')->setWidth($width[1]);
        $objActSheet->getColumnDimension('B')->setWidth($width[2]);
        $objActSheet->getColumnDimension('C')->setWidth($width[3]);
        $objActSheet->getColumnDimension('D')->setWidth($width[4]);
        $objActSheet->getColumnDimension('E')->setWidth($width[1]);
        $objActSheet->getColumnDimension('F')->setWidth($width[1]);
        $objActSheet->getColumnDimension('G')->setWidth($width[1]);
        $objActSheet->getColumnDimension('H')->setWidth($width[1]);
        $objActSheet->getColumnDimension('I')->setWidth($width[1]);
 
 		//下载的文件夹名
        $outfile = "信息列表.xlsx";
        ob_end_clean();
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");
        header('Content-Disposition:inline;filename="'.$outfile.'"');
        header("Content-Transfer-Encoding: binary");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Pragma: no-cache");
        $objWriter->save('php://output');
    }


 完全实现, 站长使用的是TP5.0框架PHP7版本, 无需使用composer,百度云盘里面有下载好的类文件在PHPExcel文件夹



技术QQ交流群:157711366

技术微信:liehuweb

写评论