• PHP导出Excel表格


    一、

    1.引入PHPExcel.php类

    2.下面的代码可以直接拿来用,此例中$list为前端传过来的json数据

    public function excel()
    {
    $pre_list = input('list');
    $list = json_decode($pre_list);

    //创建对象
    $excel = new PHPExcel();
    $excel->getActiveSheet()->getDefaultColumnDimension()->setAutoSize(true);//设置单元格宽度

    //设置表格的宽度 手动
    $excel->getActiveSheet()->getColumnDimension('A')->setWidth(30);
    $excel->getActiveSheet()->getColumnDimension('B')->setWidth(25);
    $excel->getActiveSheet()->getColumnDimension('C')->setWidth(45);
    $excel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
    $excel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
    $excel->getActiveSheet()->getColumnDimension('F')->setWidth(15);
    $excel->getActiveSheet()->getColumnDimension('G')->setWidth(15);
    $excel->getActiveSheet()->getColumnDimension('H')->setWidth(15);
    $excel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
    $excel->getActiveSheet()->getColumnDimension('J')->setWidth(70);
    $excel->getActiveSheet()->getColumnDimension('K')->setWidth(15);

    //表头数组
    $rowVal = array(0=>'订单编号', 1=>'店铺名称',2=>'商品名称', 3=>'买家', 4=>'下单时间', 5=>'订单总额',6=>'订单状态',7=>'收货人',8=>'收货人电话',9=>'收货人地址',10=>'支付方式');

    foreach ($rowVal as $k=>$r){
    $excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getFont()->setBold(true);//字体加粗
    $excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
    $excel->getActiveSheet()->setCellValueByColumnAndRow($k,1,$r);
    }

    //表格数组
    foreach($list as $k => $v)
    {
    $num=$k+2;
    $goods_name = '';
    foreach($v->order_item_list as $key => $val){
    $goods_name = $goods_name.' '.$val->goods_name;
    }
    $excel->setActiveSheetIndex(0)
    ->setCellValue('A'.$num, $v->order_no)
    ->setCellValue('B'.$num, $v->shop_name)
    ->setCellValue('c'.$num, $goods_name)
    ->setCellValue('D'.$num, $v->user_name)
    ->setCellValue('E'.$num, $v->shipping_time)
    ->setCellValue('F'.$num, $v->pay_money)
    ->setCellValue('G'.$num, $v->status_name)
    ->setCellValue('H'.$num, $v->receiver_name)
    ->setCellValue('I'.$num, $v->receiver_mobile)
    ->setCellValue('J'.$num, $v->receiver_province_name.' '.$v->receiver_city_name.' '.$v->receiver_district_name.' '.$v->receiver_address)
    ->setCellValue('K'.$num, $v->pay_type_name);
    $excel->getActiveSheet()->getStyleByColumnAndRow($k,1)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//文字居中
    }

    $write = new PHPExcel_Writer_Excel5($excel);

    //创建Excel输入对象
    ob_clean(); //清除缓冲区
    Header('content-Type:application/vnd.ms-excel;charset=utf-8');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="订单汇总表(' . date('Ymd-His') . ').xls"');
    header('Cache-Control: max-age=0');

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

     二、通用导出模板

    1.
    /*
    * @name 通用导出
    * @params title 表格名称
    * @param tit 标题数组
    * @param con 数据
    * @param key 数据 对应标题的键值数组
    * @param sizes 需要加宽的列
    * */
    function excel($title='', $tit=[], $con=[], $key=[], $sizes=[])
    {
    include_once(Env::get('root_path').'vendor/PHPExcel/PHPExcel.php');
    $objPHPExcel = new PHPExcel();
    $objPHPExcel->getProperties()->setCreator("ctos")
    ->setLastModifiedBy("ctos")
    ->setTitle($title)
    ->setSubject($title)
    ->setDescription($title)
    ->setKeywords($title)
    ->setCategory($title);

    $letter = array(
    'A',
    'B',
    'C',
    'D',
    'E',
    'F',
    'G',
    'H',
    'I',
    'J',
    'K',
    'L',
    'M',
    'N',
    'O',
    'P',
    'Q',
    'R',
    'S',
    'T'
    );
    foreach ($sizes as $size){
    $objPHPExcel->getActiveSheet(0)->getColumnDimension($size)->setAutoSize(true);
    }

    foreach ($tit as $k => $v)
    {

    $objPHPExcel->getActiveSheet()->setCellValue($letter[$k] . "1", $v);
    }
    foreach ($con as $k => $v)
    {
    foreach ($key as $k2 => $v2)
    {

    $objPHPExcel->getActiveSheet()->setCellValue($letter[$k2] . ($k + 2), $v[$v2]);
    }
    }

    // excel头参数
    header('Content-Type: application/vnd.ms-excel');
    header("Content-Disposition: attachment; filename="$title.xls"");
    header('Cache-Control: max-age=0');

    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //excel5为xls格式,excel2007为xlsx格式

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

    die();
    }
    2.调用($list为导出的列表)
    public function export($list){
    $table_name = '投诉信息表('.date('Ymd-His').')';
    $tit = array(
    "编号ID",
    "用户",
         "性别"
    );

    $key = array(
    "id",
    "name",
         "sex"
    );

    $size = ['C'];
    $this->excel($table_name, $tit, $lists, $key, $size);
    }
  • 相关阅读:
    Python与机器视觉(x)图像修复
    git push代码到远程新分支
    1024节日快乐~~~~
    【Python-GPU】GPU数据科学加速包——RAPIDS
    Echarts漂亮水滴图
    【深度学习】三维点云数据集总结
    poj 3273 Monthly Expense
    poj 3150 Cellular Automaton
    poj 3101 Astronomy
    hdu 4282 A very hard mathematic problem
  • 原文地址:https://www.cnblogs.com/luqiang213917/p/9199253.html
Copyright © 2020-2023  润新知