RXThinkCMF实现Excel导入导出

该文章展示了如何使用PHP处理Excel文件,包括从上传的文件中导入数据到数据库,以及导出数据库中的数据到Excel文件。JS部分使用layui库处理文件上传和响应服务器返回的结果。

一、导入部分

//PHP部分
public function btnImport(){
        //引入文件
        $objPHPExcel = new \PHPExcel();
        //获取表单上传文件
        $file = request()->file('file');
        $savename = \think\facade\Filesystem::putFile( 'topic', $file);

        //上传文件的地址
        $filename = ROOT_PATH . 'public/uploads/'. $savename;
        $extension = strtolower( pathinfo($filename, PATHINFO_EXTENSION) );

        if ($extension =='xlsx') {
            $objReader = new \PHPExcel_Reader_Excel2007();
            $objExcel = $objReader ->load($filename);
        } else if ($extension =='xls') {
            $objReader = new \PHPExcel_Reader_Excel5();
            $objExcel = $objReader->load($filename);
        }
        $excel_array=$objExcel->getsheet(0)->toArray();   //转换为数组格式
        array_shift($excel_array);  //删除第一个数组(标题);
        for ($i=0;$i<count($excel_array);$i++){
            //循环写入数据库
            Db::name("")->insert();
        }
        return json(['code'=>0,'msg'=>"导入成功"]);
    }

//js部分
//声明变量
var func = layui.function
        , $ = layui.$
        ,form = layui.form
        ,upload = layui.upload;
//主函数内调用PHP的接口
 upload.render({
            elem: '#uploadExcel'
            ,url: "/food/btnImport"
            ,accept: 'file' //普通文件
            ,multiple: true
            ,done: function(res){
                console.log(res)
                if (res.code == 0) {
                    layer.msg(res.msg,{icon:1,time:1500},function(){
                        window.location.reload();
                    });
                }
            }
        });



//html部分
//加入一个点击按钮  点击调用js的方法
<button type="button" class="layui-btn" id="uploadExcel"><i class="layui-icon"></i>导入数据</button>

二、导出部分

//PHP部分
    /**
     * 导出Excel
     */
	public function deriveExcel(){
        //根据自己的业务查询数据
        $data = Db::name('pop_weight')->alias('p')
            ->join('user u', 'p.uid = u.id')
            ->join('weight_msg w','p.uid = w.uid')
            ->field('p.id,p.uid,u.nickname,p.height,p.weight,w.waistline,w.thigh_circumference,w.calf_circumference,w.hipline,w.chest_circumference,w.arm_width,p.create_time')
            ->order('p.id','desc')
            ->select()
            ->toArray();
        foreach ($data as $k => &$v){
            $v['create_time'] = date('Y-m-d H:i:s',$v['create_time']);
        }

        //导出文件命名  字段名称要和data数据对应上
        $file_name = date('Y-m-d H:i:s', time());
        //export_excel('文件名称.xlsx',[字段名称],$data)
        export_excel($file_name . '.xlsx', ['主键id','用户id','用户昵称','身高','体重','腰围','大腿围','小腿围','臀围','胸围','手臂围','记录时间'], $data);
    }
	   

//js部分   一个点击事件调用接口
$(document).on('click',"#deriveExcel",function(){
            // layer.msg("按钮点击");
            window.location.href='https://healthygut.cn/userexercise/deriveExcel';
        });


//html部分  一个按钮 触发js的点击事件
<button type="button" class="layui-btn" id="deriveExcel"><i class="layui-icon"></i>导出数据</button>

没戳 就是这么简单

ThinkCMF是一款基于ThinkPHP MySQL开发的中文内容管理框架(CMF),我们一直秉承ThinkPHP大道至简的理念,坚持做最简约的ThinkPHP开源软件,多应用化开发方式,让您更快地完成自己的创业项目。 ThinkCMF 5.0.180901 更新日志: 增强模板设计,提供可视化模板设计;增加模板设计界面钩子;增加验证码图片钩子;增加后台设置网站信息界面钩子;增加后台清除缓存界面钩子;增加后台导航管理界面钩子;增加后台友情链接管理界面钩子;增加后台幻灯片管理界面钩子;增加后台幻灯片页面列表界面钩子;增加后台幻灯片页面添加界面钩子;增加后台幻灯片页面编辑界面钩子;增加后台管理员列表界面钩子;增加后台管理员添加界面钩子;增加后台管理员编辑界面钩子;增加后台角色管理界面钩子;增加后台角色添加界面钩子;增加后台角色编辑界面钩子;增加后台角色授权界面钩子;增加用户管理本站用户列表界面钩子;增加资源管理列表界面钩子;增加用户管理第三方用户列表界面钩子;增加后台首页界面钩子;增加后台回收站界面钩子;增加后台菜单管理界面钩子;增加后台自定义登录是否开启钩子;增加admin.jsjs-ajax-btn组件;优化插件加载;优化前后台上传js。[门户应用]增加文章音频,视频功能;增加门户后台文章管理列表界面钩子;增加门户后台文章添加界面钩子;增加门户后台文章编辑界面钩子;增加门户后台文章分类管理列表界面钩子;增加门户后台文章分类添加界面钩子;增加门户后台文章分类编辑界面钩子;增加门户后台页面管理列表界面钩子;增加门户后台页面添加界面钩子;增加门户后台页面编辑界面钩子;增加门户后台文章标签管理列表界面钩子;增加门户后台文章添加编辑界面右侧栏钩子;增加门户后台文章添加编辑界面主要内容钩子;增加后台文章分类显示隐藏功能;增加后台文章分类列表搜索功能;增加后台文章分类列表层级折叠功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值