<code class="PHP"><?php namespace app\admin\controller; use app\common\controller\Backend; use think\Loader; Loader::import('phpexcel.Classes.PHPExcel.IOFactory',EXTEND_PATH,'.php'); /** * * * @icon fa fa-circle-o */ class Order extends Backend { /** * Order模型对象 * @var \app\admin\model\Order */ protected $model = null; protected $dataLimit = 'auth'; public function _initialize() { parent::_initialize(); $this->model = new \app\admin\model\Order; } function excel_handle($ids){ $this->success('解决胜利,正在生成报表!',null,$ids); } function excout($ids=null){ $info = db('order')->find($ids); if(empty($info)){ $this->error('订单不存在'); } $list = db('order_details') ->alias('details') ->join('goods','goods.id = details.goods_id') ->join('goods_sku','goods_sku.id = details.sku_id') ->field('details.*,goods.name as goods_name,goods_sku.name as suk_name') ->where('order_id',$info['id']) ->select(); //订单信息 error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ini_set("error_reporting","E_ALL & ~E_NOTICE"); define('EOL',(PHP_SAPI == 'cli') ? PHP_EOL : '<br />'); date_default_timezone_set('Europe/London'); include 'extend/phpexcel/Classes/PHPExcel/IOFactory.php'; //设置模板文件 $objPHPExcel = \PHPExcel_IOFactory::load("PI-larkkey.xls"); //将json字符串转换为数组 //数据 //$billData = json_decode($_REQUEST["billData"],true); //月份表 $months = array( 1 => 'Jan', 2 => 'Feb', 3 => 'Mar', 4 => 'Apr', 5 => 'May', 6 => 'Jun', 7 => 'Jul', 8 => 'Aug', 9 => 'Sep', 10 => 'Oct', 11 => 'Nov', 12 => 'Dec' ); //根底信息 $basic_info = array( 'consignee_company_name' => $info['contactname'], 'consignee_address' => $info['address'], 'consignee_tel' => $info['tel'], 'loading_port' => $info['loading'], 'destination_port' => $info['destination'], 'shippment_way' => $info['shippment'], 'invoice_number' => 'INVOICE NO:'.$info['invoiceno'] ); //根底信息 日期 $basic_info['date'] = $months[(int)Date('m')]." ".Date('D').",".Date("Y"); //根底信息填充单元格 $objPHPExcel->getActiveSheet()->setCellValue('B7', $basic_info['consignee_company_name']) ->setCellValue('B8', $basic_info['consignee_address']) ->setCellValue('B9', $basic_info['consignee_tel']) ->setCellValue('B10', 'Ningbo') ->setCellValue('B11', $basic_info['destination_port']) ->setCellValue('B12', 'by express') ->setCellValue('G7', $basic_info['invoice_number']) ->setCellValue('G8', $basic_info['date']); //设置B10 $objValidation_ = $objPHPExcel->getActiveSheet()->getCell("B10")->getDataValidation(); $objValidation_ -> setType(\PHPExcel_Cell_DataValidation::TYPE_LIST) -> setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION) -> setAllowBlank(false) -> setShowInputMessage(true) -> setShowErrorMessage(true) -> setShowDropDown(true) -> setErrorTitle('输出的值有误') -> setError('您输出的值不在下拉框列表内.') -> setPromptTitle('设施类型') -> setFormula1('"Ningbo,Shengzhen,guangzhou"'); //设置B12 $objValidation_ = $objPHPExcel->getActiveSheet()->getCell("B12")->getDataValidation(); $objValidation_ -> setType(\PHPExcel_Cell_DataValidation::TYPE_LIST) -> setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION) -> setAllowBlank(false) -> setShowInputMessage(true) -> setShowErrorMessage(true) -> setShowDropDown(true) -> setErrorTitle('输出的值有误') -> setError('您输出的值不在下拉框列表内.') -> setPromptTitle('设施类型') -> setFormula1('"by express,by air,by express"'); //列表信息 // $list_data = array( // '0' => array( // 'pic' => '',//图片 // 'item_no' => '001',//货号 // 'description' => 'wife',//形容 // 'protocol' => 'sex',//属性 // 'color' => 'green',//色彩 // 'qty_pcs' => '100', //数量/个数 -装箱量 // 'usd_pcs' => '50',//美金/个数 // 'amount' => '100' //总计价格 // ) // ); $list_data = $list; // $PHPSheet->getColumnDimension('C')->setWidth(70); // $PHPSheet->getRowDimension(21)->setRowHeight(75);//高度 //循环填充雷同题目单元格 $row=14; foreach($list_data as $r => $dataRow) { $this->excelPic($dataRow['image'],'A'.$row,$objPHPExcel->getActiveSheet()); $objPHPExcel->getActiveSheet()->getRowDimension($row)->setRowHeight(100); $objPHPExcel->getActiveSheet() // ->setCellValue('A'.$row, $dataRow['image']) ->setCellValue('B'.$row, $dataRow['model_no']) ->setCellValue('c'.$row, $dataRow['goods_name']) ->setCellValue('D'.$row, $dataRow['suk_name']) ->setCellValue('E'.$row, $dataRow['mode']==1?'Read To Sheep':'Customization') ->setCellValue('F'.$row, $dataRow['num']) ->setCellValue('G'.$row, $dataRow['price']) ->setCellValue('H'.$row, $dataRow['num']*$dataRow['price']); $row++; } //显示总价 $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, 'Total:'."") ->setCellValue('H'.$row, $info['amount']) ->setCellValue('A'.($row+2), "Note:") //上面是固定文本信息 ->setCellValue('A'.($row+3), "1,Price Term:Fob Ningbo") ->setCellValue('A'.($row+4), "2,Price Valid:30 days") ->setCellValue('A'.($row+5), "3,Payment Term:30% T/T,70% balance before shippment or L/C or Paypal") ->setCellValue('A'.($row+6), "4,Packing:white netural packing or our logo packing,") ->setCellValue('A'.($row+7), " If need customized packing,need MOQ.And packing cost need to be adjusted.") ->setCellValue('A'.($row+10), "Bank Detail:"); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); ob_end_clean(); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attachment;filename=larkkey_'.time().'.xlsx'); header('Cache-Control: max-age=0'); $objWriter->save("php://output"); exit; //让拜访浏览器间接下载文件流 // Header("Location: /uploads/larkkey_".time().".xls"); } function excelPic($url,$seat,$obj){ if(empty($url)){ return $obj; } $temp_pic = $this->download($url,'../public/uploads/temp/'); $temp[] =$local_pic_path = '../public/uploads/temp/'.$temp_pic; if (file_exists($local_pic_path)) { $img = new \PHPExcel_Worksheet_Drawing(); $img->setPath($local_pic_path);//写入图片门路 // $img->setHeight(100);//写入图片高度 $img->setWidth(100);//写入图片宽度 // $img->setOffsetX(105);//写入图片在指定格中的X坐标值 // $img->setOffsetY(5);//写入图片在指定格中的Y坐标值 // $img->setRotation(1);//设置旋转角度 // $img->getShadow()->setVisible(true); // $img->getShadow()->setDirection(50); $img->setCoordinates($seat);//设置图片所在表格地位 $img->setWorksheet($obj);//把图片写到以后的表格中 } return $obj; } function download($url, $path = 'images/') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 信赖任何证书 $file = curl_exec($ch); curl_close($ch); $filename = pathinfo($url, PATHINFO_BASENAME); $resource = fopen($path . $filename, 'a'); fwrite($resource, $file); fclose($resource); return $filename; } }
文件