°

tp5通过phpexcel批量导出商品订单信息详解

PHP实战视频教程大全

网站做好了,上线了,客户忽然来了一个要增加一个功能,麻烦加个批量导出订单的功能吧,客户一句话我们这些屌丝除了心里暗骂一句SB,脸上还是要笑眯眯的说:好的您嘞

主要是客户的网站一句运营一段时间了,我们不太可能把原来的程序给他覆盖了,所以做这个批量导出的时候用到的第三方类库就不太推荐使用composer下载了,还是手动下载吧。

下面我们就来看看通过phpexcel批量导出订单的具体操作流程:

首先,如果你的网站目前处于开发阶段,如果你要做批量导出订单为excel的话自然是推荐你通过composer下载,一句命令搞定,如果你像我一样遇到网站做好才又有新的需求的话就只能手动引入了,不过也不麻烦。

点击下载phpexcel地址

下载完成你将得到一个phpexcel1.8的压缩包,解压此压缩包,得到数个文件夹,我们要的其中一个主文件夹:classes,将此文件夹放到tp5项目的根路径与application同级目录下,并改名为phpexcel即可。

phpexcel类库文件,该类库功能非常强大,涉及到了通过php操作excel表格的方方面面,比如:设置单元格的值、对齐方式、边框、合并单元格、拆分单元格、冻结窗口、读取文档、插入图片等等,我们要做的批量导出订单数据为excel表格只用到了其中的一小部分知识点,可能已经没有什么实用的功能要补充了,所以该类库文件已经停止维护更新很久了,但是不妨碍我们使用。

接下来我们看看要导出的表,这里重新创建一张简单的表作为演示:

而我们想要的导出的excel的结果为:

最后,我们的实现逻辑如下:

[php]
public function export(){
    if(request()->isPost()){
        $phpexcelSrc=APP_PATH.’../phpexcel/PHPExcel.php’;//我们将手动下载的phpexcel放置到了application同级目录
        include "$phpexcelSrc";//引入phpExcel
        $phpexcel=new \PHPExcel();//实例化PHPExcel类对象,方便操作即将生成的excel表格
        $phpexcel->setActiveSheetIndex(0);//选中我们生成的excel文件的第一张工作表
        $sheet=$phpexcel->getActiveSheet();//获取到选中的工作表,方面后面数据插入操作
        $res=db(‘order’)->field(‘uname,price,num,goods_name’)->select();//获取到要导出的数据,如果有限制条件可以加入where方法
        //此处设置的是生成的excel表的第一行标题
        $arr=[
            ‘uname’=>’用户名’,
            ‘price’=>’商品单价’,
            ‘num’=>’购买数量’,
            ‘goods_name’=>’商品名称’,
        ];
        array_unshift($res, $arr);//将我们上面手动设置的标题信息放到数组中,作为第一行写入数据表
        $currow=0;//因为我们生成的excel表格的行数是从1开始,所以我们预先设置好一个变量,供下面foreach循环的$k使用
        foreach ($res as $k => $v) {
            $currow=$k+1;//表示从生成的excel表格的第一行开始插入数据
            $sheet->setCellValue(‘A’.$currow,$v[‘uname’])//为A列循环插入用户名数据
                  ->setCellValue(‘B’.$currow,$v[‘price’])//为B列循环插入价格数据
                  ->setCellValue(‘C’.$currow,$v[‘num’])//为C列循环插入购买数量数据
                  ->setCellValue(‘D’.$currow,$v[‘goods_name’])//为D列循环插入商品名称数据
            ;
        }
        header(‘Content-Type: application/vnd.ms-excel’);//设置下载前的头信息
        header(‘Content-Disposition: attachment;filename="ceshi.xlsx"’);
        header(‘Cache-Control: max-age=0’);
        $phpwriter=new \PHPExcel_Writer_Excel2007($phpexcel);//此处的2007代表的是高版本的excel表格
        $phpwriter->save(‘php://output’);//生成并下载excel表格
        return;
    }
    return view();
}
[/php]

 

打赏
  喜欢