切换风格

默认晚霞 雪山 粉色心情 伦敦 花卉 绿野仙踪 加州 白云 星空 薰衣草 城市 简约黑色 简约米色 龙珠
回复 0

3874

主题

3876

帖子

1万

积分

论坛元老

Rank: 8Rank: 8

积分
12892
thinkphp5数据库转Excel导出功能[复制链接]
发表于 2022-4-7 22:31:15 | 显示全部楼层 |阅读模式
  

基于thinkphp5的一个Excel导出的功能,有详细说明介绍,不懂的可以再评论。
首先我们需要下载phpexcel类库下载地址:
22311521932[下载].rar

我们导出功能只需要用到其中的Classes把程序下载下来把Classes改为PHPExcel放到thinkphp5根目录的verdor目录下,如图:
public function daochu(){

              $xlsData = Db('student')->select();//要导出的数据库

              Vendor('PHPExcel.PHPExcel');//调用类库路径是基于vendor文件夹的

              Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');

              Vendor('PHPExcel.PHPExcel.Writer.Excel2007');

              $objExcel = new \PHPExcel();

              //set document Property

              $objWriter = \PHPExcel_IOFactory::createWriter($objExcel 'Excel2007');



              $objActSheet = $objExcel->getActiveSheet();

              $objActSheet ->settitle("demo");//可以给sheet设置名称为"demo"

              $key = ord("A");

              $letter =explode(''"ABCDEFGHIJKLMNOPQRSTUVWXYZ");

              $arrHeader = array('序号''姓名''性别''电话''邮箱''考区');

              //填充表头信息

              $lenth =    count($arrHeader);

              for($i = 0;$i < $lenth;$i++) {

                    $objActSheet->setCellValue("$letter[$i]1""$arrHeader[$i]");

              };

              //填充表格信息

              foreach($xlsData as $k=>$v){

          //有一种情况可能大家会遇到,在数据库存的是数字,不同的数字,表示不同的汉字,可以参考下方代码,用switch来解决

                    switch ($v['kaoqu'])

                    {

                          case 0:

                                  $v['kaoqu'] = "黑龙江";

                                  break;

                          case 1:

                                  $v['kaoqu'] = "内蒙古";

                                  break;

                          case 2:

                                  $v['kaoqu'] = "新疆";

                                  break;

                          case 3:

                                  $v['kaoqu'] = "西藏";

                                  break;

                          case 4:

                                  $v['kaoqu'] = "宁夏";

                                  break;

                          case 5:

                                  $v['kaoqu'] = "广西";

                                  break;

                          case 6:

                                  $v['kaoqu'] = "山东";

                                  break;

                          case 7:

                                  $v['kaoqu'] = "山西";

                                  break;

                          default:

                                  echo "默认";

                    }

                    $k +=2;

                    $objActSheet->setCellValue('A'.$k$k-1);

                    $objActSheet->setCellValue('B'.$k $v['xingming']);

                    $objActSheet->setCellValue('C'.$k$v['xingbie'] == 0?'男':'女');

                    $objActSheet->setCellValue('D'.$k $v['dianhua']);

                    $objActSheet->setCellValue('E'.$k $v['youxiang']);

                    $objActSheet->setCellValue('I'.$k $v['kaoqu']);



                    // 表格高度

                    $objActSheet->getRowDimension($k)->setRowHeight(20);

              }



              $width = array(1015202530);

              //设置表格的宽度

              $objActSheet->getColumnDimension('A')->setWidth($width[1]);

              $objActSheet->getColumnDimension('B')->setWidth($width[2]);

              $objActSheet->getColumnDimension('C')->setWidth($width[3]);

              $objActSheet->getColumnDimension('D')->setWidth($width[4]);

              $objActSheet->getColumnDimension('E')->setWidth($width[1]);

              $objActSheet->getColumnDimension('F')->setWidth($width[1]);

              $objActSheet->getColumnDimension('G')->setWidth($width[1]);

              $objActSheet->getColumnDimension('H')->setWidth($width[1]);

              $objActSheet->getColumnDimension('I')->setWidth($width[1]);

              $outfile = "信息列表.xlsx";

              ob_end_clean();

              header("Content-Type: application/force-download");

              header("Content-Type: application/octet-stream");

              header("Content-Type: application/download");

              header('Content-Disposition:inline;filename="'.$outfile.'"');

              header("Content-Transfer-Encoding: binary");

              header("Cache-Control: must-revalidate post-check=0 pre-check=0");

              header("Pragma: no-cache");

              $objWriter->save('php://output');

      }
复制代码

以上就是基于thinkphp5的一个Excel导出的功能,当访问这个方法的时候就会自动下载,还有很大的改进空间,只是为了个大家演示,有意见多多提哈~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|不懂 ( 粤ICP备14042591号-1 )|网站地图

GMT+8, 2024-11-22 05:17 , Processed in 0.078808 second(s), 32 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部