使用phpexcel将excel表格的导入导出

使用phpexcel将excel表格的导入数据库

1–使用composer安装phpexcel包

composer require phpoffice/phpexcel -vvv

2-控制器

//导入数据

    public function insertExcel(){
        if(request() -> isPost())
        {
            vendor("PHPExcel.PHPExcel"); //方法一
            $objPHPExcel =new \PHPExcel();
            
            //获取表单上传文件
            $file = request()->file('excel');
            $info = $file->validate(['xls' => 'xlsx'])->move(ROOT_PATH . 'public');  //上传验证后缀名,以及上传之后移动的地址
            
            //获取layui文件上传的
            $file = request()->file("file");
            $info = $file->validate(['ext' => 'xls'])->move(ROOT_PATH . 'public');  //上传验证后缀名,以及上传之后移动的地址 
        
            if($info)
            {
//              echo $info->getFilename();
                $exclePath = $info->getSaveName();  //获取文件名
                $file_name = ROOT_PATH . 'public' . DS . $exclePath;//上传文件的地址
                $objReader =\PHPExcel_IOFactory::createReader("Excel2007");
                $obj_PHPExcel =$objReader->load($file_name, $encode = 'utf-8');  //加载文件内容,编码utf-8
                $excel_array=$obj_PHPExcel->getSheet(0)->toArray();   //转换为数组格式
                array_shift($excel_array);  //删除第一个数组(标题);
                $city = [];
                $i=0;
                foreach($excel_array as $k=>$v) {
                    $city[$k]['id'] = $v[0];
                    $city[$k]['phone'] = $v[1];
                    $city[$k]['username'] = $v[2];
                    $city[$k]['nickname'] = $v[3];
                    $city[$k]['end_time'] = $v[4];
                    $city[$k]['level'] = $v[5];
                    $i++;
                }
                Db::name("users")->insertAll($city);
            }else
            {
                echo $file->getError();
            }
        }
        return $this->fetch("user-excel");
    }

3-表单提交

  <form action="{:url('admin/user/insertExcel')}" method="post" class="form form-horizontal" enctype="multipart/form-data">
    		<div class="row cl">
    			<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>导入数据:</label>
    			<div class="formControls col-xs-8 col-sm-9">
    				<input type="file" name="excel" />
    			</div>
    		</div>
    		<div class="row cl">
    			<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
    				<input class="btn btn-primary radius"  type="submit" value="&nbsp;&nbsp;提交&nbsp;&nbsp;">
    			</div>
    		</div>
    	</form>
4-layui 文件上传

<div id="useradd" style="display: none;padding: 5px;margin-top: 20px" >
    <form  class="layui-form" enctype="multipart/form-data">
        <div class="layui-row">
            <div class="layui-col-md6" style="margin: auto">
                <a  class="layui-btn layui-btn-normal"  target="_blank" href="/download/goods.xls"  >
                    <i class="layui-icon layui-icon-download-circle"></i>下载文件</a>
            </div>
            <div class="layui-col-md6" style="margin: auto">
                <button  class="layui-btn layui-btn-danger" type="button"  id="contract_img_url1" >
                    <i class="layui-icon"></i>上传文件</button>
            </div>
        </div>
    </form>
</div>

js 代码

<script>
    layui.use('upload', function(){
        var upload = layui.upload;
        //执行实例
        var uploadInst = upload.render({
            elem: '#contract_img_url1' //绑定元素
            ,accept:'file'
            ,exts:'xls'
            ,url: "{:url('admin/user/insertExcel')}"
            ,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
                layer.load(); //上传loading
            }
            ,done: function(res, index, upload){
                //上传完毕回调
                layer.closeAll('loading'); //关闭loading
                if(res.code==1){
                    return layer.msg('上传成功',{icon:1});
                }else {
                    return layer.msg('上传失败');
                }
            }
            ,error: function(index, upload){
                //请求异常回调
                layer.closeAll('loading'); //关闭loading
            }
        });
    });
</script>

使用phpexcel导出excel表格

1-使用composer安装phpexcel包

composer require phpoffice/phpexcel -vvv

2-控制器里面的方法

 public function excel(){
 
        $users = Db::name("users")->select();     //数据库查询
        $path = dirname(__FILE__); //找到当前脚本所在路径
 
        vendor("PHPExcel.PHPExcel"); //方法一
 
        $PHPExcel = new \PHPExcel();
        $PHPSheet = $PHPExcel->getActiveSheet();
        $PHPSheet->setTitle("demo"); //给当前活动sheet设置名称
        $PHPSheet->setCellValue("A1", "ID")
            ->setCellValue("B1", "手机")
            ->setCellValue("C1", "用户名")
            ->setCellValue("D1", "昵称")
            ->setCellValue("E1", "结束时间")
            ->setCellValue("F1", "等级");
        $i = 2;
        foreach($users as $data){
            $PHPSheet->setCellValue("A" . $i, $data['id'])
                ->setCellValue("B" . $i, $data['phone'])
                ->setCellValue("C" . $i, $data['username'])
                ->setCellValue("D" . $i, $data['nickname'])
                ->setCellValue("E" . $i, $data['end_time'])
                ->setCellValue("F" . $i, $data['level']);
            $i++;
        }
 
        $PHPWriter = \PHPExcel_IOFactory::createWriter($PHPExcel, "Excel2007");
        header('Content-Disposition: attachment;filename="表单数据.xlsx"');
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zw621

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值