PHP高级phpspreadsheet 导出多个工作表phpspreadsheet 导出多个工作表 因为有多组数据导出,所以要新建多张工作表 实现效果 主要创建方式有两种 //方式1 $spreadsheet->createSheet(); //方式2 Create a new worksheet called "My Data" $myWorkSheet = new \PhpOffice\PhpSpreads作者王明昌发布时间2019-08-28最后更新2019-08-28phpspreadsheet 导出多个工作表因为有多组数据导出,所以要新建多张工作表实现效果主要创建方式有两种//方式1 $spreadsheet->createSheet();//方式2 Create a new worksheet called "My Data"$myWorkSheet = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, 'My Data');//与下面的配合使用$spreadsheet->addSheet($myWorkSheet, 0);//将“My Data”工作表作为电子表格对象中的第一个工作表附加代码如下参考文档:https://phpspreadsheet.readthedocs.io/en/master/topics/worksheets/#adding-a-new-worksheet优化后的代码复制public function export(){ $name='每日统计'.date("Y-m-d H-i-s",time()); // $data=[['aa','aa','cc','dd','ee'],['bb','bb','cc','dd','ee']]; // ?工地考勤 $data['kaoqin'] = Db::name('pt_gd_gdrz rz') ->field("DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m-%d') as date,u.name,rz.title,rz.content") ->where(['p.appid'=>session('pt_res.appid')]) ->join('zf_pt_post p','p.id=rz.gd_id') ->join('zf_user u','rz.openid = u.openid') ->whereTime('ctime', 'today') ->select(); ////工地打卡 $data['daka'] = Db::name('pt_gd_gddk rz') ->field("DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m-%d') as date,u.name,p.title") ->where(['p.appid'=>session('pt_res.appid')]) ->join('zf_pt_post p','p.id=rz.gd_id') ->join('zf_user u','rz.openid = u.openid') ->whereTime('ctime', 'today') ->select(); // 新用户 $data['yonghu'] = Db::name('user')->where(['appid'=>session('pt_res.appid')])->field("DATE_FORMAT(FROM_UNIXTIME(create_time),'%Y-%m-%d %H:%i:%s') as date,name") ->whereTime('create_time', 'today') ->select(); // 预约 $data['yuyue'] = Db::name('yuyue y') ->field("DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m-%d') as date,u.name,y.phone") ->where(['u.appid'=>session('pt_res.appid')]) ->whereTime('ctime', 'today') ->join('zf_user u','u.id=y.uid') ->select(); //设置表头: $head['kaoqin'] = ['时间','姓名','标题', '内容']; //数据中对应的字段,用于读取相应数据: $keys['kaoqin'] = ['date','name','title','content']; $count['kaoqin'] = count($head['kaoqin']); //计算表头数量 $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet()->setTitle('工地考勤'); for ($i = 65; $i < $count['kaoqin'] + 65; $i++) { //数字转字母从65开始,循环设置表头: $sheet->setCellValue(strtoupper(chr($i)) . '1', $head['kaoqin'][$i - 65]); } /*--------------开始从数据库提取信息插入Excel表中------------------*/ foreach ($data['kaoqin'] as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count['kaoqin'] + 65; $i++) { //数字转字母从65开始: $sheet->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys['kaoqin'][$i - 65]]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽 } } //工地打卡 //方式2 Create a new worksheet called "My Data" $myWorkSheet['daka'] = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, '工地打卡');//与下面的配合使用 $spreadsheet->addSheet($myWorkSheet['daka'], 0);//将“My Data”工作表作为电子表格对象中的第一个工作表附加 $head['daka'] = ['时间','姓名','标题']; //数据中对应的字段,用于读取相应数据: $keys['daka'] = ['date','name','title']; $count['daka'] = count($head['daka']); //计算表头数量 for ($i = 65; $i < $count['daka'] + 65; $i++) { //数字转字母从65开始,循环设置表头: $myWorkSheet['daka']->setCellValue(strtoupper(chr($i)) . '1', $head['daka'][$i - 65]); } /*--------------开始从数据库提取信息插入Excel表中------------------*/ foreach ($data['daka'] as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count['daka'] + 65; $i++) { //数字转字母从65开始: $myWorkSheet['daka']->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys['daka'][$i - 65]]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽 } } // 新用户 //方式2 Create a new worksheet called "My Data" $myWorkSheet['yonghu'] = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, '新用户');//与下面的配合使用 $spreadsheet->addSheet($myWorkSheet['yonghu'], 0);//将“My Data”工作表作为电子表格对象中的第一个工作表附加 $head['yonghu'] = ['时间','姓名']; //数据中对应的字段,用于读取相应数据: $keys['yonghu'] = ['date','name']; $count['yonghu'] = count($head['yonghu']); //计算表头数量 for ($i = 65; $i < $count['yonghu'] + 65; $i++) { //数字转字母从65开始,循环设置表头: $myWorkSheet['yonghu']->setCellValue(strtoupper(chr($i)) . '1', $head['yonghu'][$i - 65]); } /*--------------开始从数据库提取信息插入Excel表中------------------*/ foreach ($data['yonghu'] as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count['yonghu'] + 65; $i++) { //数字转字母从65开始: $myWorkSheet['yonghu']->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys['yonghu'][$i - 65]]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽 } } // 预约 //方式2 Create a new worksheet called "My Data" $myWorkSheet['yuyue'] = new \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet($spreadsheet, '预约');//与下面的配合使用 $spreadsheet->addSheet($myWorkSheet['yuyue'], 0);//将“My Data”工作表作为电子表格对象中的第一个工作表附加 $head['yuyue'] = ['时间','姓名','电话']; //数据中对应的字段,用于读取相应数据: $keys['yuyue'] = ['date','name','phone']; $count['yuyue'] = count($head['yuyue']); //计算表头数量 for ($i = 65; $i < $count['yuyue'] + 65; $i++) { //数字转字母从65开始,循环设置表头: $myWorkSheet['yuyue']->setCellValue(strtoupper(chr($i)) . '1', $head['yuyue'][$i - 65]); } /*--------------开始从数据库提取信息插入Excel表中------------------*/ foreach ($data['yuyue'] as $key => $item) { //循环设置单元格: //$key+2,因为第一行是表头,所以写到表格时 从第二行开始写 for ($i = 65; $i < $count['yuyue'] + 65; $i++) { //数字转字母从65开始: $myWorkSheet['yuyue']->setCellValue(strtoupper(chr($i)) . ($key + 2), $item[$keys['yuyue'][$i - 65]]); $spreadsheet->getActiveSheet()->getColumnDimension(strtoupper(chr($i)))->setWidth(20); //固定列宽 } } header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="' . $name . '.xlsx"'); header('Cache-Control: max-age=0'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); //删除清空: $spreadsheet->disconnectWorksheets(); unset($spreadsheet); exit; }
2018-08-22支付宝支付接口错误说明错误查询 https://docs.open.alipay.com/58/103599/ 今天我遇到的一个错误,经过询问小二,网关错误,错误如下 ILLEGAL_ACCESS_SWITCH_SYSTE
2019-12-10阿里巴巴开源镜像提供的 packagist 镜像服务全局配置(推荐) 所有项目都会使用该镜像地址: composer config -g repo.packagist composer https://mirrors.aliyun.com/compos
2018-08-26实例 | 支付宝支付(使用md5加密)参数的获取 pid|key获取: 商户中心---账户管理---查看pid|key https://openhome.alipay.com/platform/keyManage.htm?keyType=
2018-10-31实例 | tp5使用七牛云上传图片和文件/删除文件thinkphp5中使用七牛云 下载 https://github.com/qiniu/php-sdk vendor文件下 新建文件 application/extra/qiniu.php retur
2018-05-28ajax-post传值的写法var data = {type:type,is_ok:is_ok,id:id}; $("#train").on("click",function(){ var id = $("#id_res").v
2018-05-27Ajax异步搜索内容,并显示使用ajax异步搜索内容,如果符合内容,则一行行的显示,每次查询时清空上次的记录 $("#search").on("click",function(){ var key = $("#keywords"