phpexcel 导出phpqrcode生成的二维码和多sheet

public function daochu(){
$param = input();
vendor('phpqrcode');//引入类库
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Worksheet.Drawing");
import("Org.Util.PHPExcel.Writer.Excel2007");
$objPHPExcel = new \PHPExcel();

$objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);

$objActSheet = $objPHPExcel->getActiveSheet();
unset($param['/web/User/daochu']);
if (!empty($param)) {
$where['id'] = array('in', $param);
$list = db('village')->where($where)->select();
$cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'AG', 'AH', 'AI', 'AJ', 'AK', 'AL', 'AM', 'AN', 'AO', 'AP', 'AQ', 'AR', 'AS', 'AT', 'AU', 'AV', 'AW', 'AX', 'AY', 'AZ');
$title = [
'编码号', '名称', '二维码'
];
$sheet = db('village')->where('fid', 1)->select();
/** 缺省情况下,PHPExcel会自动创建第一个SHEET,其索引SheetIndex=0 */
/** 设置 当前处于活动状态的SHEET 为PHPExcel自动创建的第一个SHEET */
foreach ($sheet as $key => $item) {

if ($key !== 0) $objPHPExcel->createSheet();
$objPHPExcel->setactivesheetindex($key);
/** 设置工作表名称 */
$objPHPExcel->getActiveSheet($key)->setTitle($item['name']);

foreach ($title as $k1 => $v1) {
/** 垂直居中 */
$objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$k1])->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
/** 水平居中 */
$objPHPExcel->setActiveSheetIndex($key)->getStyle($cellName[$k1])->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
/** 设置默认宽度 */
$objPHPExcel->setActiveSheetIndex($key)->setCellValue($cellName[$k1] . '1', $v1);
/** 写入多行数据 */
}
$n = 2;
foreach ($list as $k2 => $v2) {
if ($item['id'] == $v2['id'] || $item['id'] == $v2['fid']) {
$objPHPExcel->getActiveSheet($key)->getColumnDimension('A')->setWidth(12);
$objPHPExcel->getActiveSheet($key)->getColumnDimension('B')->setWidth(12);
$objPHPExcel->getActiveSheet($key)->getColumnDimension('C')->setWidth(15);
$value = 'http://192.168.1.177:8081/h5/yewu/index.html?bianma=' . $v2['id'] . '&type=2';
$errorCorrectionLevel = 'L'; //容错级别
$matrixPointSize = 5; //生成图片大小
//生成二维码图片
// 判断是否有这个文件夹 没有的话就创建一个
if (!is_dir("dkcode")) {
// 创建文件加
mkdir("dkcode");
}
//设置二维码文件名
$filename = 'dkcode/' . time() . rand(10000, 9999999) . '.png';
//生成二维码
$erweima = \QRcode::png($value, $filename, $errorCorrectionLevel, $matrixPointSize, 2);

$objPHPExcel->getActiveSheet($key)->setCellValue('A' . $n, $v2['id']);
$objPHPExcel->getActiveSheet($key)->setCellValue('B' . $n, $v2['name']);
// 图片生成
$objDrawing[$n] = new \PHPExcel_Worksheet_Drawing();
$objDrawing[$n]->setPath('./' . $filename);
// 设置宽度高度
$objDrawing[$n]->setHeight(80);//照片高度
$objDrawing[$n]->setWidth(80); //照片宽度
/*设置图片要插入的单元格*/
$objDrawing[$n]->setCoordinates('C' . $n);
// 图片偏移距离
$objDrawing[$n]->setOffsetX(12);
$objDrawing[$n]->setOffsetY(12);
$objDrawing[$n]->setWorksheet($objPHPExcel->getActiveSheet());
// 表格高度
$objPHPExcel->getActiveSheet($key)->getRowDimension($n)->setRowHeight(80);
$n++;
}
}

}
$fileName = '打卡二维码表';
$date = date("YmdHis", time());
$fileName .= "_{$date}.xls";
//设置活动单指数到第一个表,所以Excel打开这是第一个表
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();//清楚乱码
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
// 判断是否有这个文件夹 没有的话就创建一个
if (!is_dir("dkexcel")) {
// 创建文件加
mkdir("dkexcel", 0777, true);
}
// $_SERVER['DOCUMENT_ROOT'].
$url = './dkexcel/' . $fileName;
$xie = $objWriter->save($url);

return setReturn(200, '保存成功', 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER["SERVER_PORT"] . '/dkexcel/' . $fileName);
}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值