CI框架使用PHPExcel生成快递面单

php生成快递面单
最后生成的面单类似于下边的样子,其中的条形码是使用Barcodegen类库生成的(可以看我的上一篇博),随便生成了一下,对应的其他快递的需要再研究下
在这里插入图片描述
首先需要先使用excel制作一个类似于上边的快递面单,之后后台对应的订单的数据替换对应的位置就行了,下边我贴一下自己写的一个方法(主要是将图片放到对应的单元格中的):
首先需要先引入对应的库类(PhpExcel):

public function test()
	{
	    //图片处理类,这个才是图片导出的关键哦
	    require_once (FCPATH.'/aui/libraries/PHPExcel/Worksheet/Drawing.php');
	    $this->load->library('PHPExcel/Style/Alignment');
	    //PHPExcel\Style
	    $objDrawing = new PHPExcel_Worksheet_Drawing();
	    $this->phpexcel->createSheet(0);
	    $this->phpexcel->setActiveSheetIndex(0);
	    $currentSheet = $this->phpexcel->getActiveSheet();
	    // 水平居中(位置很重要,建议在最初始位置,这里我举例,ABCDEFG,可以按照自己的需求定义!~)
	    $this->phpexcel->setActiveSheetIndex(0)->getStyle('B11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	    
	    // 设置个表格宽度(这个一定要设置哦,不然图片会大出单元格的)
	    //$this->phpexcel->getActiveSheet()->getColumnDimension('B')->setWidth(400);

	    //设置第一行标题
	   // $currentSheet->setCellValue('B11', "条形码");

        //设置单元格高度,这个是重点哦
        //$currentSheet->getRowDimension(11)->setRowHeight(60);
        $pic = creat_barcode('ceshi');
        //开始设置图片啦~~
        $objDrawing->setPath(FCPATH.'code/code63048.png');
        // 设置图片宽度高度
        //$objDrawing->setHeight(80);//照片高度
        //$objDrawing->setWidth(400); //照片宽度
        /*设置图片要插入的单元格*/
        $objDrawing->setCoordinates('B11');
        // 图片偏移距离
        $objDrawing->setOffsetX(12);
        $objDrawing->setOffsetY(12);
        $objDrawing->setWorksheet($this->phpexcel->getActiveSheet());

        //导出excel到表格
        $sheetWrite = IOFactory::createWriter($this->phpexcel, 'Excel5');

        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="快递.xls"');
        header('Cache-Control: max-age=0');
        $sheetWrite->save('php://output');
	}

下来是生成快递面单的方法

eg:

/**
* miandan生成面单的方法
* $data array 订单数据
* $barcode string 条形码地址
**/
function miandan($data, $barcode)
{
		$filePath = './miandan.xls';
	    $objPHPExcel = IOFactory::load($filePath);
	    $num = 1;
	    $goods = "西红柿";
	    $raw_data = $objPHPExcel->setActiveSheetIndex(0)->toArray();
	    foreach($raw_data as $key => $value){
	        foreach($value as $k => $v){
	            if($v == "{% t_username %}"){
	                $value[$k] = str_replace('{% t_username %}', $data['name'], $v);
	            }elseif($v == "{% t_phone %}"){
	                $value[$k] = str_replace('{% t_phone %}', $data['phone'], $v);
	            }else if($v == "{% t_address %}"){
	                $value[$k] = str_replace('{% t_address %}', dr_linkagepos('address', $data['city'], '', '').$data['address'], $v);
	            }elseif($v == "{% f_username %}"){
	                $value[$k] = str_replace('{% f_username %}', 'test', $v);
	            }elseif($v == "{% f_phone %}"){
	                $value[$k] = str_replace('{% f_phone %}', '18888888888', $v);
	            }elseif($v == "{% f_address %}"){
	                $value[$k] = str_replace('{% f_address %}', '山西省-太原市-晋源区', $v);
	            }elseif ($v == "{% f_code %}"){
	                $value[$k] = str_replace('{% f_code %}', $data['kuaidiid'], $v);
	            }elseif ($v == "{% num %}"){
	                $value[$k] = str_replace('{% num %}', "【总计:{$num}件】$shops", $v);
	            }
	        }
	        $miandan_data[$key] = $value;
	    }
	    
	    //添加图片条形码
	    $barcode = creat_barcode($data['kuaidiid']);
	    require_once (FCPATH.'/aui/libraries/PHPExcel/Worksheet/Drawing.php');
	    $this->load->library('PHPExcel/Style/Alignment');
	    $objDrawing = new PHPExcel_Worksheet_Drawing();
	    $objDrawing->setPath($barcode);
	    $objPHPExcel->setActiveSheetIndex(0)->getStyle('B11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	     
	    $objDrawing->setCoordinates('B11');
	    $objDrawing->setHeight(50);//照片高度
	    //$objDrawing->setWidth(180);
	    //$currentSheet->getRowDimension(2)->setRowHeight(60);
	    // 图片偏移距离
	    $objDrawing->setOffsetX(30);
	    $objDrawing->setOffsetY(2);
	    $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
	     
	    $objDrawing1 = new PHPExcel_Worksheet_Drawing();
	    $objDrawing1->setPath($barcode);
	    $objPHPExcel->setActiveSheetIndex(0)->getStyle('C17')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
	    
	    $objDrawing1->setCoordinates('C17');
	    
	    $objDrawing1->setHeight(35);//照片高度
	    //$objDrawing->setWidth(180);
	    //$currentSheet->getRowDimension(2)->setRowHeight(60);
	    // 图片偏移距离
	    $objDrawing1->setOffsetX(30);
	    $objDrawing1->setOffsetY(5);
	    $objDrawing1->setWorksheet($objPHPExcel->getActiveSheet());
	    
	    $objPHPExcel->setActiveSheetIndex(0)->fromArray($miandan_data, null, "A1");
	    
	    
	    $objWriter = IOFactory::createWriter($objPHPExcel, 'Excel5');
	    header('Content-Type: application/vnd.ms-excel');
	    header('Content-Disposition: attachment;filename="快递'.$data['order_id'].'.xls"');
	    header('Cache-Control: max-age=0');
	    $objWriter->save('php://output');
}

下来贴一下面单的样子:
在这里插入图片描述

PHPExcel下载地址:
http://www.php.cn/xiazai/leiku/1491

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yietion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值