1. 程式人生 > >tp3.2和Bootstrap模態框匯入excel表格資料

tp3.2和Bootstrap模態框匯入excel表格資料

匯入按鈕

<button class="btn btn-info" type="button" id="import" data-toggle="modal" data-target="#myModal">匯入</button>

模態框

<!-- Modal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
        <div class="modal-dialog"
role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <
h4 class="modal-title" id="myModalLabel">匯入</h4> </div> <div class="modal-body"> <div>匯入格式如下</div> <table class="table table-bordered"> <tr> <
th>編號</th> <th>姓名</th> <th>手機號</th> <th>性別</th> <th>出生日期</th> </tr> <tr> <td>1</td> <td>小李</td> <td>18888888888</td> <td></td> <td>2013年12月20日</td> </tr> </table> <form action="#" method="post" id="file-form" enctype="multipart/form-data"> <div class="form-group"> <label class=" control-label" style="width:85px;">上傳檔案<sup>*</sup></label> <div class=""> <input type="file" name="excel" style="display:block;" /> </div> </div> </form> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal" id="file-import">確定</button> <!--<button type="button" class="btn btn-danger" id="editUser">確定</button>--> </div> </div> </div> </div>

彈出模態框,選擇檔案,點選確定

//匯入
    $('#file-import').on('click',function(){
        var fileFlag = false;
        fileFlag = $("input[name='excel']").val();
        if(!fileFlag) {
            alert( '請選擇檔案!');
            return false;
        }
        // 建立
        var form_data = new FormData();
        // 獲取檔案
        var file_data = $("input[name='excel']").prop("files")[0];
        // 把所以表單資訊
        form_data.append("excel", file_data);
        $.ajax({
            url:'/Admin/import',
            type:'post',
            dataType:'json',
            processData: false,  // 注意:讓jQuery不要處理資料
            contentType: false,  // 注意:讓jQuery不要設定contentType
            data: form_data,
            success:function(info){
                console.log(info);
                alert(info.msg);
                if(info.code == 1){
                    window.location.reload();
                }
            }
        })
    });

PHP控制器

    /**
     * 匯入
     */
    public function import(){
        $name = substr(strrchr($_FILES['excel']['name'], '.'), 1);
        $file = $_FILES['excel']['tmp_name'];
        $data = $this->excel($name,$file);
        if(!$data){
            return $this->ajaxReturn(['code'=>-1,'msg'=>'檔案格式不正確!']);
        }
        foreach($data as &$v){
            $dateArr = date_parse_from_format('Y年m月d日',$v['time']);
            if(!$dateArr['year']){
                $v['time'] = '';
                continue;
            }
            $v['time'] = $dateArr['year'].'-'.$dateArr['month'].'-'.$dateArr['day'];
        }
        $allID = M('user')->addAll($data);
        if($allID){
            return $this->ajaxReturn(['code'=>1,'msg'=>'匯入成功']);
        }
        $this->ajaxReturn(['code'=>-2,'msg'=>'匯入失敗']);
    }

    /**
     * 讀表格資訊
     */
    public function excel($name,$files){
        //匯入PHPExcel類庫,因為PHPExcel沒有用名稱空間,只能inport匯入
        import("Common.Vendor.Excel.PHPExcel");
        //建立PHPExcel物件,注意,不能少了\
        $PHPExcel=new \PHPExcel();
        if ($name == 'xls') {
            //如果excel檔案字尾名為.xls,匯入這個類
            import("Common.Vendor.Excel.PHPExcel.Reader.Excel5");
            $PHPReader=new \PHPExcel_Reader_Excel5();
        }
        if ($name == 'xlsx') {
            //如果excel檔案字尾名為.xlsx,匯入這下類
            import("Common.Vendor.Excel.PHPExcel.Reader.Excel2007");
            $PHPReader=new \PHPExcel_Reader_Excel2007();
        }

        //載入檔案
        $PHPExcel=$PHPReader->load($files);
        $currentSheet=$PHPExcel->getSheet(0);
        $allColumn=$currentSheet->getHighestColumn();
        $allRow=$currentSheet->getHighestRow();
        //迴圈讀取資料
        for($currentRow=2;$currentRow<=$allRow;$currentRow++){
            $arr['name'] = $PHPExcel->getActiveSheet()->getCell('B'.$currentRow)->getValue();
            $arr['mobile'] = $PHPExcel->getActiveSheet()->getCell('C'.$currentRow)->getValue();
            $arr['sex'] = $PHPExcel->getActiveSheet()->getCell('D'.$currentRow)->getValue();
            $arr['time'] = gmdate("Y年m月d日",\PHPExcel_Shared_Date::ExcelToPHP($PHPExcel->getActiveSheet()->getCell('F'.$currentRow)->getValue()));
            $data[] =$arr;
        }
        return $data;
    }