PHPExcel-實際操作
阿新 • • 發佈:2018-11-07
<?php array(1) { ["stream"]=> array(35) { [0]=> array(8) { ["price"]=> string(4) "7.00" ["time"]=> string(19) "2018-06-14 18:18:54" ["type"]=> string(6) "採購" ["no"]=> string(22) "sffsdfsdfsdfsfdsfds" ["status"]=> string(9) "已支出" ["lists"]=> array(1) { [1]=> array(10) { ["create_time"]=> string(19) "2018-06-14 18:18:44" ["ie"]=> string(5) "-----" ["name"]=> string(6) "測試" ["ount"]=> string(1) "1" ["price"]=> string(4) "3.00" ["sum"]=> string(4) "7.00" ["box"]=> string(4) "4.00" ["price"]=> string(4) "7.00" ["back"]=> string(4) "0.00" ["type"]=> string(4) "0.00" } } ["pid"]=> string(19) "v53434534" } [2]=> array(8) { ["price"]=> string(5) "14.81" ["time"]=> string(19) "2018-07-09 15:38:18" ["type"]=> string(6) "採購" ["no"]=> string(22) "hkgfhfghfhfghfh" ["status"]=> string(9) "已支出" ["lists"]=> array(4) { [2]=> array(10) { ["create_time"]=> string(19) "2018-07-09 15:37:56" ["ie"]=> string(10) "xcvxvxcvxcv" ["name"]=> string(18) "vxcvxcvxvc" ["mount"]=> string(1) "1" ["price"]=> string(4) "5.00" ["sum"]=> string(4) "5.00" ["_price"]=> string(4) "0.00" ["price"]=> string(5) "14.81" ["back"]=> string(4) "9.26" ["type"]=> string(4) "1.93" } [3]=> array(10) { ["create_time"]=> string(19) "2018-07-09 15:37:56" ["ie"]=> string(10) "xcvxvxcvxcv" ["name"]=> string(18) "vxcvxcvxvc" ["mount"]=> string(1) "1" ["price"]=> string(4) "5.00" ["sum"]=> string(4) "5.00" ["_price"]=> string(4) "0.00" ["price"]=> string(5) "14.81" ["back"]=> string(4) "9.26" ["type"]=> string(4) "1.93" } [4]=> array(10) { ["create_time"]=> string(19) "2018-07-09 15:37:56" ["ie"]=> string(10) "xcvxvxcvxcv" ["name"]=> string(18) "vxcvxcvxvc" ["mount"]=> string(1) "1" ["price"]=> string(4) "5.00" ["sum"]=> string(4) "5.00" ["_price"]=> string(4) "0.00" ["price"]=> string(5) "14.81" ["back"]=> string(4) "9.26" ["type"]=> string(4) "1.93" } [5]=> array(10) { ["create_time"]=> string(19) "2018-07-09 15:37:56" ["ie"]=> string(10) "xcvxvxcvxcv" ["name"]=> string(18) "vxcvxcvxvc" ["mount"]=> string(1) "1" ["price"]=> string(4) "5.00" ["sum"]=> string(4) "5.00" ["_price"]=> string(4) "0.00" ["price"]=> string(5) "14.81" ["back"]=> string(4) "9.26" ["type"]=> string(4) "1.93" } } ["pid"]=> string(19) "dfsfdsfsdsfsdf" } } }; //tp3.2 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); //例項化一個PHPExcel()物件 $objSheet = $objPHPExcel->getActiveSheet(); //選取當前的sheet物件 $objSheet->setTitle('user_lous_stream'); //對當前sheet物件命名 //常規方式:利用setCellValue()填充資料 //橫向單元格標識 $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H','I','J','K','L'); //表格文字居中 foreach($cellName as $val){ $objPHPExcel->getActiveSheet()->getStyle($val)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->getActiveSheet()->getStyle($val)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); } //設定字型樣式 $objPHPExcel->getDefaultStyle()->getFont()->setName( 'Arial'); $objPHPExcel->getActiveSheet()->getStyle('A1:L1')->getFont()->setBold(true); $objPHPExcel->getDefaultStyle()->getFont()->setSize(22); //設定表頭列表 $objSheet->setCellValue("A1","銷售日期") ->setCellValue("B1","銷售單號") ->setCellValue("C1","商品編號") ->setCellValue("D1","商品名稱") ->setCellValue("E1","數量") ->setCellValue("F1","單價") ->setCellValue("G1","費") ->setCellValue("H1","返現") ->setCellValue("I1","優惠") ->setCellValue("J1","稅費)") ->setCellValue("K1","金額小計(元)") ->setCellValue("L1","備註"); //利用setCellValues()填充資料 //設定單元格的寬度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(16); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(6); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(10); //把構造好的額陣列遍歷顯示 foreach($data["stream"] as $key => $val){ foreach($val['lists'] as $k => $v){ $objPHPExcel->getActiveSheet()->setCellValue($cellName[0].($k+1), $val['銷售日期']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[1].($k+1), $val['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[2].($k+1), $v['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[3].($k+1), $v['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[4].($k+1), $v['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[5].($k+1), $v['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[6].($k+1), $v['name']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[7].($k+1), $v['name']); //設定單個字型的顏色 if($v['type'] != 0 ){ $objPHPExcel->getActiveSheet()->setCellValue($cellName[8].($k+1), $v['invoice_tax']); //設定單個字型的顏色 $objPHPExcel->getActiveSheet()->getStyle($cellName[8].($k+1))->getFont()->getColor()->setARGB(\PHPExcel_Style_Color::COLOR_RED); }else{ $objPHPExcel->getActiveSheet()->setCellValue($cellName[8].($k+1), 0); } $objPHPExcel->getActiveSheet()->setCellValue($cellName[9].($k+1), $v['優惠']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[10].($k+1), $v['金額小計(元)']); $objPHPExcel->getActiveSheet()->setCellValue($cellName[11].($k+1), $val['備註']); } //合併想要的單元格 $key = array_keys($val['lists']); $first = reset($key); $end = end($key); $objPHPExcel->getActiveSheet()->mergeCells('A'.($first+1) .':A'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('B'.($first+1) .':B'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('G'.($first+1) .':G'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('H'.($first+1) .':H'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('I'.($first+1) .':I'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('J'.($first+1) .':J'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('k'.($first+1) .':k'.($end+1)); $objPHPExcel->getActiveSheet()->mergeCells('L'.($first+1) .':L'.($end+1)); } // $objSheet->fromArray($data); //利用fromArray()直接一次性填充資料 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); //設定寫入excel的型別 $objWriter->save($url. $title .'.xlsx'); //儲存檔案