PHPExcel导出excel数据

简介:Excel导出需求真实千奇百怪,最近在外包公司做外包项目,客户要求导出订单表格,要求单元格的大小宽度及高度都必须按照他们的要求进行修改,经过无数次修改还是没有达到客户的要求,最后只能让客户可一个调整好的模板,之后再这个模板的基础之上进行开发

Excel导出需求真实千奇百怪,最近在外包公司做外包项目,客户要求导出订单表格,要求单元格的大小宽度及高度都必须按照他们的要求进行修改,经过无数次修改还是没有达到客户的要求,最后只能让客户可一个调整好的模板,之后再这个模板的基础之上进行开发;
Excel模板开发的具体步骤如下:

<?php
class excel{
    public function get(){
            $inputFileName = ROOT_PATH.'Site'.DS.'excel'.DS.'account_order.xls';//获取文件的类型
            $inputFileType = PHPExcel_IOFactory::identify($inputFileName);//创建一个excel对象
            $objReader =\PHPExcel_IOFactory::createReader(inputFileType);//读取excel模板(参数是模板的路径)
            $objPHPExcel = $objReader->load ($inputFileName); //设置当前sheet
            $objPHPExcel->setActiveSheetIndex(0);//获取当前的sheet
            $sheet = $objPHPExcel->getActiveSheet(); //设置标题
            $sheet->setTitle('账单导出'); //设置某个单元格的内容
            $sheet->setCellValue('B7',$user_info['username']);        
            $sheet->setCellValue('C7','客户:'.$user_info['othername']);        
            $sheet->setCellValue('G7',date('Y-m-d'));        
            $count = count($data);        
            if($count>5){ //在13行前添加$count-5行
                $sheet->insertNewRowBefore(13,$count-5);
            }        
            foreach($data as $k=>$v)
            {            
                $k = $k+9;           
                $sheet->setCellValue("A".$k,$v['add_time']);  
                //设置以文本形式,如果不设置数字类型的长度太长会已其他科学计算方式显示          
                $sheet->setCellValue('B'.$k,$v['orderoutno']); 
               $sheet->getStyle('B'.$k)->getNumberFormat()
              ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_NUMBER);            
                $sheet->setCellValue('C'.$k,$v['transport']);            
                $sheet->setCellValue('D'.$k,$v['nationality_info']['name']);            
                $sheet->setCellValue('F'.$k,$v['pronumber']);            
                $sheet->setCellValue('G'.$k,$v['weight']);            
                $sheet->setCellValue('H'.$k,$v['volume']);            
                $sheet->setCellValue('I'.$k,$v['totalprice']);            
                $sheet->setCellValue('J'.$k,$v['cosremarks']);
            }        
            $this->browserExport("Xlsx", $user_info['username']."的账单");        
            $writer = \PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");        
            $writer->save("php://output");
    }    
      //将excel输出
    public function browserExport($type,$filename) {        
        if($type!="Xlsx"){
                header('Content-Type: application/vnd.ms-excel');
        }else{
                header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        }
        header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
        header('Cache-Control: max-age=0');
    }
}

如果只是少量数据的数据的excel导出,没有什么问题,但是如果涉及大量数据的导出,可能会报内存不足的错误。对于这个问题大家可以使用 xlswriter 导出数据

有遗漏或者不对的可以在我的公众号留言哦

编程经验共享公众号二维码

编程经验共享公众号二维码
更多内容关注公众号
Copyright © 2021 编程经验共享 赣ICP备2021010401号-1