tp3.2 实现 PHPExcel 上传 下载

  什么都不说 直接上代码

php文件

class IndexController extends Controller {
    public function index(){
        $this->display('index');
    }
    public function upload(){
    //print_r($_FILES);
        foreach($_FILES as $val){
            $f=1;
            if(!is_uploaded_file($val['tmp_name'])){
                $f=0;
                $this->error($val['name']."不是HTTP POST上传的");
            }
        }
        if($f==0){
            die;
        }
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     50000000 ;// 设置附件上传大小
        $upload->saveName  =     '';// 文件命名规则
        $upload->exts      =     array('xls');// 设置附件上传类型
        $upload->savePath  =     'Uploads/'; // 设置附件上传目录    // 上传文件
        $upload->subName   =     array();   //子目录
        $info   =   $upload->upload();
        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功
            Vendor('excel.PHPExcels'); //第三方类
            Vendor('excel.PHPExcel.IOFactory'); //第三方类
            $test = M('test');     //实例化模型-********************
            $type = 'Excel5';      //文件类型
            $xlsReader = \PHPExcel_IOFactory::createReader($type);    //对象
            // var_dump($xlsReader);

            foreach($info as $key => $val){
                $Sheets = $xlsReader->load('./Public/'.$val['savepath'].'/'.$val['savename']); //excel对象
                // print_r($Sheets);
                //开始读取
                $Sheet = $Sheets->getSheet(0)->toArray(); //读取第一个工作表(注意编号从0开始) 如果读取多个可以做一个循环0,1,2,3....
                //print_r($Sheet);
                //得到二维数组,每个小数组是excel表格内容的一行 里面包含此行的每列的数据
                echo '<pre>';
                //print_r($Sheet);die;
                $flag=1;
                foreach($Sheet as $k=>$v){
                    //print_r($v);
                    if($v[0]=='id'){
                        continue;
                    }else{
                        //验证数据是否合法
                        foreach($v as $key => $v1){
                            if($v1 == ''){
                                echo $val['savename'].'文件中数据不全,请填写后重新上传';
                                unlink('./Public/'.$val['savepath'].'/'.$val['savename']);
                                $flag=0;
                                break;
                            }
                        }
                        if($flag==0){
                            break;
                        }
                    }
                }
                if($flag == 1){
                    foreach($Sheet as $k=>$v){
                        if($v[0]=='id'){
                            continue;
                        }else{
                            $data['name'] = $v[1];
                            $data['content'] = $v[2];
                            $data['desc'] = $v[3];
                            $test -> add($data);
                        }
                    }
                }

            }
        }
    }
    //下载模板
    public function download(){
        $test = M('test');
        $data = $test->query('desc test');
       // print_r($data);die;
        $str = '';
        foreach($data as $v) {
            $str .= "$v[Field]\t";
        }
        $str .= "\n";
        $filename = date('Ymd').'.xls';
        $this->exportExcel($filename,$str); //生成excel表格
    }
    //导出数据
    function downloadAll(){
        $test = M('test');
        $data = $test->select();
        $data1 = $test->query('desc test');
        $str = '';
        foreach($data1 as $v) {
            $str .= "$v[Field]\t";
        }
        $str .= "\n";
        foreach($data as $key => $val){
            foreach($val as $v){
                $str .= "$v\t";
            }
            $str .= "\n";
        }
        $filename = date('Ymd').'.xls';
        $this->exportExcel($filename,$str); //生成excel表格
    }
    function exportExcel($filename,$content){
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Content-Type: application/vnd.ms-execl");
        header("Content-Type: application/force-download");
        header("Content-Type: application/download");
        header("Content-Disposition: attachment; filename=".$filename);
        header("Content-Transfer-Encoding: binary");
        header("Pragma: no-cache");
        header("Expires: 0");
        echo $content;
    }
}

html


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>excel 上传 下载</title>
</head>
<body>

    <form method="post" action="__URL__/upload" enctype="multipart/form-data">
        <input type="button" value="下载模板" οnclick="download()">
        <input type="button" value="导出" οnclick="downloadAll()">
        <input type='button' value="加一个" οnclick="jia()"><br><br id="j">
        上传:    <input type="file" name='file' id='file'> &nbsp; <input type='submit' value="导入">
    </form>

</body>
<script src="__PUBLIC__/jquery.js"></script>
<script>
//alert($);
    var i=1;
    function jia(){
        $("#j").after('上传: <input type="file" name="file'+i+'" id="file'+i+'"><br><br>');
        i++;
    }
    function download(){
        location.href='__URL__/download';
    }
    function downloadAll(){
        location.href='__URL__/downloadAll';
    }
</script>
</html>




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值