fastadmin中使用phpExcel导出表格数据到excel中

虽然说fastadmin中表格自带导出excel,但是那个东西忒不好用了,每次点击导出,就刷新表格,默认最近七天的数据,所以无奈之下只好另寻办法了,废话不多说,接下来说一下phpExcel的使用:

一,下载phpExcel

git clone https://github.com/PHPOffice/PHPExcel

完成之后会出现以下以下的文件夹 

 这个被更名的文件夹内部目录如下:

 二,把上图圈住的那个PHPExcel文件夹拷贝到你的项目中

 三,在你的控制器中添加导出方法:

 /**
             * 导出EXCEL
             */
            public function export()
            {
                //查询数据库信息
                try {
                    $xlsData = Db::table('fw_goods')->select();
                } catch (\Exception $e) {
                    return $e->getMessage();
                }
                Vendor('PHPExcel.PHPExcel');//调用类库,路径是基于vendor文件夹的
                Vendor('PHPExcel.PHPExcel.Worksheet.Drawing');
                Vendor('PHPExcel.PHPExcel.Writer.Excel2007');
                //实例化
                $objExcel = new \PHPExcel();
                //设置文档属性
                $objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
                //设置内容
                $objActSheet = $objExcel->getActiveSheet();
                $key = ord("A");
                $letter = explode(',', "A,B,C,D,E,F");
                $arrHeader = array('时间', '当日扫码量', '当日预警量', '当日无效码量');
                //填充表头信息
                $lenth = count($arrHeader);
                for ($i = 0; $i < $lenth; $i++) {
                    $objActSheet->setCellValue("$letter[$i]1", "$arrHeader[$i]");
                };
                //填充表格信息
                foreach ($xlsData as $k => $v) {
                    $k += 2;
                    //表格内容
                    $objActSheet->setCellValue('A' . $k, $v['id']);
                    $objActSheet->setCellValue('B' . $k, $v['company_id']);
                    $objActSheet->setCellValue('C' . $k, $v['name']);
                    $objActSheet->setCellValue('D' . $k, date('Y-m-d H:i:s', $v['createtime']));
                    $objActSheet->setCellValue('E' . $k, $v['goods_images']);
                    // 图片生成
                    //$objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
                    //$objDrawing[$k]->setPath(ROOT_PATH."public/static/image/playbtn.png");
                    // 设置宽度高度
                    //$objDrawing[$k]->setHeight(40);//照片高度
                    //$objDrawing[$k]->setWidth(40); //照片宽度
                    // 设置图片要插入的单元格
                    //$objDrawing[$k]->setCoordinates('C' . $k);
                    // 图片偏移距离
                    //$objDrawing[$k]->setOffsetX(30);
                    //$objDrawing[$k]->setOffsetY(12);
                    //$objDrawing[$k]->setWorksheet($objExcel->getActiveSheet());

                    // 表格高度
                    $objActSheet->getRowDimension($k)->setRowHeight(20);
                }

                $width = array(20, 20, 15, 10, 10, 30, 10, 15);
                //设置表格的宽度
                $objActSheet->getColumnDimension('A')->setWidth($width[5]);
                $objActSheet->getColumnDimension('B')->setWidth($width[1]);
                $objActSheet->getColumnDimension('C')->setWidth($width[0]);
                $objActSheet->getColumnDimension('D')->setWidth($width[5]);
                $objActSheet->getColumnDimension('E')->setWidth($width[5]);

                $outfile = md5("扫码明细" . time()) . ".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');
            }

四:在你的html页面添加导出按钮:

<a href="javascript:;" style="float: right;margin-top: 10px;" class="btn btn-success btn-export {:$auth->check('data/barcodedata/export')?'':'hide'}" title="{:__('Export')}" id="btn-export-file"><i class="fa fa-download"></i> {:__('Export')}</a>

五:在你的js文件中调用导出方法:

注意一定要使用window.location.href,不要用ajax请求,否则浏览器不会出现下载条,这个问题在我以往的博客中有写过,感兴趣的可以翻一翻。 

其中导出方法参考了https://blog.csdn.net/adorablewolf/article/details/88394160

猜你喜欢

转载自blog.csdn.net/qq_41588568/article/details/109000580