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); }
}
phpexcel 导出phpqrcode生成的二维码和多sheet
最新推荐文章于 2023-03-07 16:23:59 发布