PHPExcel匯出excel表格

來源:互聯網
上載者:User

標籤:enter   pos   art   obj   osi   generated   rtu   out   iconv   

if(!function_exists(‘exportExcel‘)){
    //匯出excel檔案
    function exportExcel($datas, $save_method=‘http‘, $save_path=‘‘){
        set_time_limit(0);
        error_reporting(E_ALL);
        ini_set(‘display_errors‘, TRUE);
        ini_set(‘display_startup_errors‘, TRUE);
        $excel_title = ‘箱子詳情列表‘.date(‘YmdHis‘,time());
        $code = $datas[‘code‘];
        $totalBox = $datas[‘totalBox‘];
        $totalPackages = $datas[‘totalPackages‘];
        $totalWeight = $datas[‘totalWeight‘];
        $data = $datas[‘data‘];
        require_once ROOT_PATH.‘/Classes/PHPExcel.php‘;
        $objPHPExcel = new PHPExcel();
        $objPHPExcel->getProperties()
            ->setCreator("Maarten Balliauw")
            ->setLastModifiedBy("Maarten Balliauw")
            ->setTitle("Office 2007 XLSX Test Document")
            ->setSubject("Office 2007 XLSX Test Document")
            ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
            ->setKeywords("office 2007 openxml php")
            ->setCategory("Test result file");
        $row = array(‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘);
        // 設定列寬
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘A‘)->setWidth(12);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘B‘)->setWidth(23);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘C‘)->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘D‘)->setWidth(18);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘E‘)->setWidth(22);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘F‘)->setWidth(23);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘G‘)->setWidth(12);
        $objPHPExcel->getActiveSheet()->getColumnDimension(‘H‘)->setWidth(15);
        $styleThinBlackBorderOutline = array(
            ‘borders‘ => array (
                ‘outline‘ => array (
                    ‘style‘ => PHPExcel_Style_Border::BORDER_THIN,
                    ‘color‘ => array (‘argb‘ => ‘FF000000‘),                                    ),
            ),
        );
        for($i=0;$i<count($row);$i++){
            //設定邊框
            for ($a = 1; $a < 4; $a++) {
                $objPHPExcel->getActiveSheet()->getStyle($row[$i] . $a)->applyFromArray($styleThinBlackBorderOutline);
            }
            //設定置中
            for($j=1;$j<500;$j++){
                $objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::VERTICAL_CENTER);
                $objPHPExcel->getActiveSheet()->getStyle($row[$i].$j)->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
            }
            //設定背景色
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].‘1‘)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].‘1‘)->getFill()->getStartColor()->setARGB(‘00FFFF00‘);
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].‘2:‘.$row[$i].‘3‘)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
            $objPHPExcel->getActiveSheet(0)->getStyle($row[$i].‘2:‘.$row[$i].‘3‘)->getFill()->getStartColor()->setARGB(‘00DBE5F1‘);
            //設定換行
            $objPHPExcel->getActiveSheet()->getStyle($row[$i].‘2‘)->getAlignment()->setWrapText(true);
        }
        // 設定行高
        $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(28);
        $objPHPExcel->getActiveSheet()->getRowDimension(‘2‘)->setRowHeight(66);
        //定義表的前三行
        $objPHPExcel->getActiveSheet()
            ->mergeCells(‘A1:B1‘)
            ->mergeCells(‘C1:D1‘)
            ->mergeCells(‘E1:F1‘)
            ->mergeCells(‘G1:H1‘)
            ->mergeCells(‘B2:B3‘)
            ->mergeCells(‘C2:C3‘)
            ->mergeCells(‘H2:H3‘)
            ->mergeCells(‘G2:G3‘);
        $objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue(‘A1‘, ‘客戶代碼 Code:‘)
            ->setCellValue(‘C1‘, $code)
            ->setCellValue(‘E1‘, ‘日期 Date:‘)
            ->setCellValue(‘G1‘, date(‘Y-m-d H:i:s‘,time()))
            ->setCellValue(‘A2‘, ‘總箱數:‘.$totalBox."\n".‘Total box‘)
            ->setCellValue(‘A3‘, ‘箱號‘)
            ->setCellValue(‘B2‘, ‘轉運單號‘."\n".‘Tracking Number‘)
            ->setCellValue(‘C2‘, ‘訂單號‘)
            ->setCellValue(‘D2‘, ‘總包裹數:‘.$totalPackages."\n".‘Total Packages‘)
            ->setCellValue(‘D3‘, ‘包裹重量(g)‘)
            ->setCellValue(‘E2‘, ‘總箱重(kg):‘.$totalWeight."\n".‘Total Weight‘)
            ->setCellValue(‘E3‘, ‘箱重(kg)‘)
            ->setCellValue(‘F2‘, ‘總箱體積重‘."\n".‘(長*寬*高cm/5000)‘)
            ->setCellValue(‘F3‘, ‘箱體積(長*寬*高cm)‘)
            ->setCellValue(‘G2‘, ‘頭程‘."\n".‘發貨方式‘)
            ->setCellValue(‘H2‘, ‘跟蹤號‘."\n".‘Tracking Number‘);
        //處理後面的邏輯
        //當前所在的行數
        $num = 4;
        foreach($data as $k => $v){
            //具體訂單個數
            $len = count($v);
            $mergeLen = $num + $len-4;
            $objPHPExcel->getActiveSheet()
                ->mergeCells(‘E‘.$num.‘:E‘.$mergeLen)
                ->mergeCells(‘F‘.$num.‘:F‘.$mergeLen)
                ->mergeCells(‘G‘.$num.‘:G‘.$mergeLen)
                ->mergeCells(‘H‘.$num.‘:H‘.$mergeLen);
            $objPHPExcel->setActiveSheetIndex()
                ->setCellValue(‘A‘.$num, $v[‘boxId‘])
                ->setCellValue(‘E‘.$num, $v[‘weightss‘])
                ->setCellValue(‘G‘.$num, $v[‘carrier_company‘]);
            for($i=0;$i<$len-3;$i++){
                $objPHPExcel->setActiveSheetIndex()
                    ->setCellValue(‘A‘.$num, $v[‘boxId‘])
                    ->setCellValueExplicit(‘B‘.$num, $v[$i][‘tracknumber‘],PHPExcel_Cell_DataType::TYPE_STRING)
                    ->setCellValue(‘C‘.$num, $v[$i][‘ebay_id‘])
                    ->setCellValue(‘D‘.$num, $v[$i][‘weight‘]);
                $num++;
            }
        }
        $objPHPExcel->getActiveSheet()->setTitle($excel_title);
        $objPHPExcel->setActiveSheetIndex(0);
        $filename = $excel_title.‘.xls‘;
        if($save_method == ‘file‘){
            //儲存到檔案
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);
            $full_path = $save_path.$filename;
            //本地使用,線上注釋
            //$full_path = iconv(‘utf-8‘, ‘gbk//IGNORE‘, $full_path);
            if(is_file($full_path)) unlink($full_path);
            $objWriter->save($full_path);
            return $full_path;
        }else{
            ob_end_clean();
            //直接在瀏覽器輸出
            header(‘Content-Type: application/vnd.ms-excel‘);
            header("Content-Disposition: attachment;filename={$filename}");
            header(‘Cache-Control: max-age=0‘);
            $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5‘);
            $objWriter->save(‘php://output‘);
        }
    }
}

PHPExcel匯出excel表格

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.