1. 程式人生 > 實用技巧 >Excel匯出生成多個sheet php

Excel匯出生成多個sheet php

//批量匯出配送清單
    public function get_all_downexcel() {
        require_once ROOT_PATH . '/ThinkPHP/Library/Vendor/phpexcel/PHPExcel.php';
        $gpc = I('request.');
        $list_ids = explode(',',$gpc['ids_arr']);
        $objPHPExcel     = new \PHPExcel();
        $objPHPExcel->getProperties()
            ->setCreator("Hohan")
            ->setLastModifiedBy("Hohan")
            ->setTitle("Office 2003 XLSX Test Document")
            ->setSubject("Office 2003 XLSX Test Document")
            ->setDescription("Test document for Office 2003 XLSX, generated using PHP classes.")
            ->setKeywords("office 2003 openxml php")
            ->setCategory("Test result file");
        foreach($list_ids as $key => $list_id){
            $condition = " and list_id={$list_id} ";
            $list = M()->query('SELECT * FROM ' . C('DB_PREFIX') . "lionfish_comshop_deliverylist_goods 
    
            WHERE 1 " . $condition . ' order by id desc ');
            $exportlist = array();
            $i = 1;
            foreach ($list as $val) {
                $tmp_exval = array();
                $tmp_exval['num_no'] = $i;
                $tmp_exval['name'] = $val['goods_name'];
                $tmp_exval['quantity'] = $val['goods_count'];
                $tmp_exval['sku_str'] = $val['sku_str'];
                $info = M('lionfish_comshop_order_goods')->field('price')->where(array(
                    'rela_goodsoption_valueid' => $val['rela_goodsoption_valueid'],
                    'goods_id' => $val['goods_id']
                ))->order('order_goods_id desc')->find();
                $tmp_exval['price'] = $info['price'];
                $tmp_exval['total_price'] = round($info['price'] * $val['goods_count'], 2);
                //goods_id  rela_goodsoption_valueid
                $exportlist[] = $tmp_exval;
                $i++;
            }           
            //第一個sheet
            $objPHPExcel->createSheet();
            $objActSheet = $objPHPExcel->setActiveSheetIndex($key);
            //標題
            $list_info = M('lionfish_comshop_deliverylist')->where(array(
                'id' => $list_id
            ))->find();
            $A1 = $list_info['head_name']; //團老大
            $A2 = '團長:' . $list_info['head_name'] . '     配送員:' . $list_info['clerk_name']. '     聯絡電話:' . $list_info['head_mobile'];
            $A3 = '     提貨地址:' . $list_info['head_address'];
            $A4 = '配送單:' . $list_info['list_sn'] . '     時間:' . date('Y-m-d H:i:s', $list_info['create_time']);
            $A5 = '配送路線:' . $list_info['line_name'];
            $objPHPExcel->getActiveSheet()->setCellValue('A1',$A1);
            $objPHPExcel->getActiveSheet()->setCellValue('A2',$A2);
            $objPHPExcel->getActiveSheet()->setCellValue('A3',$A3);
            $objPHPExcel->getActiveSheet()->setCellValue('A4',$A4);
            $objPHPExcel->getActiveSheet()->setCellValue('A5',$A5);
            $objPHPExcel->getActiveSheet()->setCellValue('A6','序號');
            $objPHPExcel->getActiveSheet()->setCellValue('B6','商品名稱');
            $objPHPExcel->getActiveSheet()->setCellValue('C6','數量');
            $objPHPExcel->getActiveSheet()->setCellValue('D6','規格');
            if(!empty($list_info['delivery_qrcode']))
            {
                //圖片生成
                $objDrawing = new \PHPExcel_Worksheet_Drawing();
                $img_src='./Uploads/image/'.$list_info['delivery_qrcode'];
                $objDrawing->setPath($img_src);
                // 設定寬度高度
                $objDrawing->setHeight(60);//照片高度
                $objDrawing->setWidth(60); //照片寬度
                /*設定圖片要插入的單元格*/
                $objDrawing->setCoordinates('H1');
                // 圖片偏移距離
                $objDrawing->setOffsetX(12);
                $objDrawing->setOffsetY(12);
                $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
            }


            $i = 1;
            foreach($exportlist as $key2 => $val){
                //資料
                $objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setWrapText(true);
                $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+6),$i);
                $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+6),$val['name']);
                $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+6),$val['quantity']);
                $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+6),$val['sku_str']);
                $i ++;
            }
            //sheet名稱
            $objPHPExcel->getActiveSheet()->setTitle("清單資料".$list_id);
        
        }
        $obwrite = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        header('Pragma: public');
        header('Expires: 0');
        header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
        header('Content-Type:application/force-download');
        header('Content-Type:application/vnd.ms-execl');
        header('Content-Type:application/octet-stream');
        header('Content-Type:application/download');
        header("Content-Disposition:attachment;filename=批量匯出清單資料.xls");
        header('Content-Transfer-Encoding:binary');
        $obwrite->save('php://output');
        die;
        
    }