云迈博客

您现在的位置是:首页 > 后端开发 > PHP > 正文

PHP

后台自定义导出excel

阳帅2021-09-30PHP307
getActiveSheet();$spreadsheet-˃getDefaultStyle();//设置表头//$head=[
 <php?
       /**
     * @param $list 要导出数据
     * @param $head 表头 例['订单编号','收货人','手机号','收货地址','订单类型','商品名称','下单数量']
     * @param $keys 表头对应字段['order_sn', 'consignee', 'phone', 'userinfo', 'ordertype','goodinfo','num']
     * @param $fileName 导出文件的名字
     * @throws \PhpOffice\PhpSpreadsheet\Exception
     * @throws \PhpOffice\PhpSpreadsheet\Writer\Exception
     */
    public static function exportInfo($list, $head, $keys, $fileName){
        @ini_set("memory_limit","1024M");
        @ini_set("max_execution_time","40");
        ob_end_clean();
        ob_start();
        $spreadsheet  = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();
        $spreadsheet->getDefaultStyle();
        //设置表头
//        $head = ['订单编号','收货人','手机号','收货地址','订单类型','商品名称','下单数量'];
//        //数据中对应的字段,用于读取相应数据:
//        $keys = ['order_sn', 'consignee', 'phone', 'userinfo', 'ordertype','goodinfo','num'];
        $count = count($head);  //计算表头数量
        for ($i = 65; $i < $count + 65; $i++) {     //数字转字母从65开始,循环设置表头:
            $sheet->setCellValue(strtoupper(chr($i)) . '1', $head[$i - 65]);
        }
        /*--------------开始从数据库提取信息插入Excel表中------------------*/


        foreach ($list as $key => $item) {             //循环设置单元格:
            //$key+2,因为第一行是表头,所以写到表格时   从第二行开始写

            for ($i = 65; $i < $count + 65; $i++) {     //数字转字母从65开始:
                $spreadsheet->getActiveSheet(0)->setCellValueExplicit(strtoupper(chr($i)) . ($key + 2), $item[$keys[$i - 65]],DataType::TYPE_STRING);
//                $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys[$i - 65]]);
                $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽
                $spreadsheet->getActiveSheet()->getRowDimension(strtoupper(chr($i)))->setRowHeight(1000); //固定列宽

            }
        }

        header('Content-Type: application/vnd.ms-excel');
        header("Content-Type: application/force-download");//强制下载
        header('Content-Disposition: attachment;filename="'.$fileName.' '. date('Y-m-d H-i-s') . '.xlsx"');
        header('Cache-Control: max-age=0');
        $writer = new Xlsx($spreadsheet);
        $writer->save('php://output');

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~