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