后台导入导出 到 Execl

2 篇文章 0 订阅
1 篇文章 0 订阅

首先安装PHPexecl扩展

composer require phpoffice/phpexcel

 

导出

    HTML

<from>
    <input class="layui-input" placeholder="开始日" name="start" id="start">
        <input class="layui-input" placeholder="截止日" name="end" id="end">
        <button class="layui-btn" onclick="exel()">导出</button>
</from>

Js

function exel(){
        var start = $('#start').val();
        var end = $('#end').val();

        if(start == '' || end == ''){
            layer.msg('请输入开始日或截止日!', {icon: 5});

            return false;
        }
        window.location.href = '/public/index.php/Index/Report/exel?start=' + start + '&end=' + end;
        // $.get('/public/index.php/Index/User/exel' , {start:start,end:end} , function(res){
        //     console.log(res)
        // })
    }

php

public  function exel(){

        $start = strtotime(input('start'));

        $end = strtotime(input('end'));

        $data = Db::table(self::TABLE)
            -> alias('a')
            -> join('admin_analyze b' , 'a.id = b.sample_code_id')
            -> join('admin_datas c' , 'a.uid = c.id')
            -> field('a.* , b.probiotics,b.bacterium,b.result,b.level,b.report,c.tell')
            -> where( 'a.schedule','eq','100%')
            -> where('a.c_time' , 'between' , [$start , $end] )
            -> select();
        //echo DB::table(self::TABLE)->getlastsql();
        //print_r($data);die;
        foreach ($data as $k => $v){

            $data[$k]['c_time'] = date('Y-m-d H:i:s' , $v['c_time']);
            $data[$k]['no5'] = str_replace('+' ,'   ' ,$v['no5']);
            $data[$k]['no8'] = str_replace('+' ,'   ' ,$v['no8']);
            $data[$k]['no9'] = str_replace('+' ,'   ' ,$v['no9']);
            $data[$k]['no10'] = str_replace('+' ,'   ' ,$v['no10']);
            unset($data[$k]['password']);
        }
        //print_r($data);die;
        $this -> excel($data);
    }


//导出方法
    public function excel($list){
        ob_start();
        $objPHPExcel = new \PHPExcel();
        // 设置sheet
        $objPHPExcel->setActiveSheetIndex(0);
        // 设置列的宽度
        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(50);
//        $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(10);
        $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('U')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('V')->setWidth(50);
        $objPHPExcel->getActiveSheet()->getColumnDimension('W')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('X')->setWidth(50);

        // 设置表头
        $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'id');
        $objPHPExcel->getActiveSheet()->SetCellValue('B1', '样本号');
        $objPHPExcel->getActiveSheet()->SetCellValue('C1', '电话');
        $objPHPExcel->getActiveSheet()->SetCellValue('D1', '姓名');
        $objPHPExcel->getActiveSheet()->SetCellValue('E1', '性别');
        $objPHPExcel->getActiveSheet()->SetCellValue('F1', '身高');
        $objPHPExcel->getActiveSheet()->SetCellValue('G1', '体重');
        $objPHPExcel->getActiveSheet()->SetCellValue('H1', '出生日期');
        $objPHPExcel->getActiveSheet()->SetCellValue('I1', '采样日期');
        $objPHPExcel->getActiveSheet()->SetCellValue('J1', '本次取样特征');
        $objPHPExcel->getActiveSheet()->SetCellValue('K1', '您平时是否使用营养补充剂');
        $objPHPExcel->getActiveSheet()->SetCellValue('L1', '您饮食的喜好习惯-口味');
        $objPHPExcel->getActiveSheet()->SetCellValue('M1', '您饮食的喜好习惯-干稀度');
        $objPHPExcel->getActiveSheet()->SetCellValue('N1', '进度');
        $objPHPExcel->getActiveSheet()->SetCellValue('O1', '健康指数');
        $objPHPExcel->getActiveSheet()->SetCellValue('P1', '健康描述');
//        $objPHPExcel->getActiveSheet()->SetCellValue('Q1', '预计天数');
        $objPHPExcel->getActiveSheet()->SetCellValue('R1', '益生菌');
        $objPHPExcel->getActiveSheet()->SetCellValue('S1', '致病菌');
        $objPHPExcel->getActiveSheet()->SetCellValue('T1', '菌群含量结果');
        $objPHPExcel->getActiveSheet()->SetCellValue('U1', '代谢水平');
        $objPHPExcel->getActiveSheet()->SetCellValue('V1', '报告参考');
        $objPHPExcel->getActiveSheet()->SetCellValue('W1', '时间');
        $objPHPExcel->getActiveSheet()->SetCellValue('X1', 'Pdf报告');

        //存取数据
        $num = 2;
        foreach ($list as $k => $v) {
            $objPHPExcel->getActiveSheet()->SetCellValue('A' . $num, $v['id']);
            $objPHPExcel->getActiveSheet()->SetCellValue('B' . $num, $v['sample_code']);
            $objPHPExcel->getActiveSheet()->SetCellValue('C' . $num, $v['tell']);
            $objPHPExcel->getActiveSheet()->SetCellValue('D' . $num, $v['name']);
            $objPHPExcel->getActiveSheet()->SetCellValue('E' . $num, $v['sex']);
            $objPHPExcel->getActiveSheet()->SetCellValue('F' . $num, $v['stature']);
            $objPHPExcel->getActiveSheet()->SetCellValue('G' . $num, $v['weight']);
            $objPHPExcel->getActiveSheet()->SetCellValue('H' . $num, $v['date_brith']);
            $objPHPExcel->getActiveSheet()->SetCellValue('I' . $num, $v['no4']);
            $objPHPExcel->getActiveSheet()->SetCellValue('J' . $num, $v['no5']);
            $objPHPExcel->getActiveSheet()->SetCellValue('K' . $num, $v['no8']);
            $objPHPExcel->getActiveSheet()->SetCellValue('L' . $num, $v['no9']);
            $objPHPExcel->getActiveSheet()->SetCellValue('M' . $num, $v['no10']);
            $objPHPExcel->getActiveSheet()->SetCellValue('N' . $num, $v['schedule']);
            $objPHPExcel->getActiveSheet()->SetCellValue('O' . $num, $v['health']);
            $objPHPExcel->getActiveSheet()->SetCellValue('P' . $num, $v['describe']);
//            $objPHPExcel->getActiveSheet()->SetCellValue('Q' . $num, $v['numday']);
            $objPHPExcel->getActiveSheet()->SetCellValue('R' . $num, $v['probiotics']);
            $objPHPExcel->getActiveSheet()->SetCellValue('S' . $num, $v['bacterium']);
            $objPHPExcel->getActiveSheet()->SetCellValue('T' . $num, $v['result']);
            $objPHPExcel->getActiveSheet()->SetCellValue('U' . $num, $v['level']);
            $objPHPExcel->getActiveSheet()->SetCellValue('V' . $num, $v['report']);
            $objPHPExcel->getActiveSheet()->SetCellValue('W' . $num, $v['c_time']);
            $objPHPExcel->getActiveSheet()->SetCellValue('X' . $num, $v['file']);
            $num++;
        }

        // 文件名称
        $fileName = "激活码" . date('Y-m-d', time()) . rand(1, 1000);
        $xlsName = iconv('utf-8', 'gb2312', $fileName);
        // 设置工作表名
        $objPHPExcel->getActiveSheet()->setTitle('sheet');
        //下载 excel5与excel2007
        $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
        //dump($objWriter);die;
        ob_end_clean();     // 清除缓冲区,避免乱码
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl;charset=UTF-8");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        header("Content-Disposition:attachment;filename=" . $xlsName . ".xls");
        header("Content-Transfer-Encoding:binary");
        $objWriter->save("php://output");
    }

 

 

导入

HTML

 <form action="/public/index.php/Index/Schedule/upload_excel" method="post" enctype="multipart/form-data" onsubmit="return toVaild()">

                选择文件:<input type="file" name="file" id="ff"><input type="submit"  class="layui-btn" value="导入">

            </form>

Js

//验证选择文件
    function toVaild(){
            var val = document.getElementById("ff").value;

            if(val != ""){
                return true;
            }
            else{
                alert("没有选择文件,不能提交");
                 return false;
            }
    }

PHP

//上传exel
    public function upload_excel(){
        //设置文件上传的最大限制
        ini_set('memory_limit','1024M');
        //加载第三方类文件
        //Loader::import("PHPExcel.Classes.PHPExcel");
        //防止乱码
        header("Content-type:text/html;charset=utf-8");
        //实例化主文件
        $model = new \PHPExcel();
        //接收前台传过来的execl文件
        $file = $_FILES['file'];

        if($file == ''){
            echo "未选择文件         <a href='../Schedule/schedule_list'>返回</a>";die;
        }
        //截取文件的后缀名,转化成小写
        $extension = strtolower(pathinfo($file['name'],PATHINFO_EXTENSION));

        if($extension == "xlsx"){
            //2007(相当于是打开接收的这个excel)
            $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
        }else{
            //2003(相当于是打开接收的这个excel)
            $objReader = \PHPExcel_IOFactory::createReader('Excel5');
        }

        $objContent = $objReader -> load($file['tmp_name']);
        $sheetContent = $objContent -> getSheet(0) -> toArray();
        unset($sheetContent[0]);
        //echo '<pre/>';
        //print_r($sheetContent);die;
        foreach ($sheetContent as $k => $v){
            //$arr['username'] = $v[0];
            $arr['sample_code'] = $v[0];
            $arr['c_time'] = time();
            //$arr['class'] = $v[3];
            $res[] = $arr;
        }
        $res = Db::name('admin_sample_code') -> insertAll($res);
        if($res){
            echo "导入成功         <a href='上页'>返回</a>";
        }else{
            echo "导入失败         <a href='上页>重新导入</a>";
        }
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于后台管理系统导出Excel,可以使用前端的插件`Export2Excel`来实现。在需要使用插件的地方,可以按需引入该插件。在回调函数中,可以通过发送Ajax请求获取数据,然后使用工具函数对数据进行格式化处理。最后,使用`Export2Excel`插件将数据导出为Excel文件。 具体的实现步骤如下: 1. 导入插件和工具函数:在需要使用导出功能的文件中,导入`Export2Excel`插件和工具函数。可以使用`import()`动态引入插件,并使用`then`方法来处理回调函数。 2. 发送Ajax请求获取数据:使用`getEmployeeList`函数发送Ajax请求,获取数据。 3. 格式化数据:使用`formatData`函数对获取到的数据进行格式化处理,得到表头和数据列表。 4. 导出Excel文件:使用`Export2Excel`插件中的`export_json_to_excel`方法来导出Excel文件。传入表头、数据列表、文件名等参数。 示例代码如下: ```javascript import('@/vendor/Export2Excel').then(async excel => { const res = await getEmployeeList(this.curPage, this.pageSize) // 发送Ajax请求,获取数据 const list = res.data.rows const { header, data } = formatData(list) // 格式化数据 excel.export_json_to_excel({ header: header, // 表头 data: data, // 数据 filename: 'excel-list', // 文件名 autoWidth: true, // 宽度自适应 bookType: 'xlsx' // 文件类型 }) }) ``` 这样就可以在后台管理系统中实现导出Excel的功能了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [后台管理系统中常见的Excel导出功能](https://blog.csdn.net/weixin_72089365/article/details/128993195)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [后台管理系统中的导入导出excel(支持中文)](https://blog.csdn.net/weixin_30699465/article/details/96891537)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值