Excel匯出生成多個sheet php
阿新 • • 發佈:2020-08-20
//批量匯出配送清單 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; }