ThinkPHP uploadify 새로 고치지 않고 PHPExcel 가져오기 데이터 업로드

WBOY
풀어 주다: 2016-07-29 09:14:49
원래의
894명이 탐색했습니다.

Front-end HTML JQuery 참고 Jquery는 버전 1.x가 필요하며 버전 2.x는 사용할 수 없습니다

1. 필요한 파일 소개 및 입력 업로드

  <load file="__PUBLIC__/js/jquery-1.11.3.min.js" />
  <load file="__PUBLIC__/uploadify/jquery.uploadify.min.js" />
  <load file="__PUBLIC__/uploadify/uploadify.css" />
로그인 후 복사

<span><</span><span>input </span><span>type</span><span>="file"</span><span> class</span><span>=""</span><span> id</span><span>="student"</span><span> name</span><span>="student"</span><span>></span>
로그인 후 복사

2.uploadify 사용 작업

 <script><span>  $(</span><span>function</span><span>(){
    </span><span>//</span><span>ThinkPHP上传地址</span><span>var</span> upload = "{:U(MODULE_NAME.'/Student/upload')}"<span>;
    </span><span>//</span><span>ThinkPHP sessionID的提交变量</span><span>//</span><span>'VAR_SESSION_ID'=>'session_id',在ThinkPHP/Conf/convention.php中进行配置,默认关闭的需要开启</span><span>var</span> sid = '{:session_id()}'<span>;
    </span><span>//</span><span>导入数据地址</span><span>var</span> daoruUrl = "{:U(MODULE_NAME.'/Student/daoruHandle')}"
    <span>//</span><span>Amaze ui 模态框</span><span>var</span> modal = $('#my-modal-loading'<span>);
    </span><span>//</span><span>uploadify使用方法</span>    $('#student'<span>).uploadify({
      </span>'swf'      : '__PUBLIC__/uploadify/uploadify.swf'<span>,
      </span>'uploader'<span> : upload,
      </span>'buttonText' : '选择文件...'<span>,
      </span>'width':120<span>,
      </span>'height':30<span>,
      </span>'formData':{'session_id'<span>:sid},
      </span>'fileTypeExts':'*.xls'<span>,
      </span><span>//</span><span>开始上传弹出模态框</span>      'onUploadStart' : <span>function</span><span>(file) {
        $(</span>'#alert-content').html('正在<strong>上传文件</strong>'<span>);
          modal.modal();
        },
      </span><span>//</span><span>上传成功关闭模态框,并用后台函数导入数据</span>      'onUploadSuccess':<span>function</span><span>(file, data, response){
        $(</span>'#alert-content').html('正在导入数据'<span>);
        data </span>= eval("("+data+")"<span>);
        $.<strong>ajax</strong>({
          type: </span>'POST'<span>,
          url: daoruUrl,
          data: {</span>'file'<span>:data.file},
          success: </span><span>function</span><span>(retdata){
            modal.modal(</span>'close'<span>);
            </span><span>if</span>(retdata==1<span>){
              alert(</span>'导入成功'<span>);
            }</span><span>else</span><span>{
              alert(</span>'导入失败'<span>);
            }
          },
          dataType: </span>'json'<span>        });
      }
    });
  });
  </span></script>
로그인 후 복사

3. ThinkPHP 컨트롤러 업로드 작업: Upload.class.php 공간이 필요합니다. 소개

<span>function</span><span> upload(){
        </span><span>$config</span> = <span>array</span><span>(
            </span>'maxSize'    =>    3145728,
            'rootPath'   =>    './Uploads/',
            'savePath'   =>    '',
            'saveName'   =>    <span>array</span>('uniqid',''),
            'exts'       =>    <span>array</span>('xls'),
            'autoSub'    =>    <span>true</span>,
            'subName'    =>    <span>array</span>('date','Ymd'),<span>            );
        </span><span>$upload</span> = <span>new</span> Upload(<span>$config</span><span>);
        </span><span>//</span><span> <strong>上传文件</strong> </span><span>$info</span>   =   <span>$upload</span>-><span>upload();
        </span><span>if</span>(!<span>$info</span>) {<span>//</span><span> 上传错误提示错误信息</span><span>$this</span>->error(<span>$upload</span>-><span>getError());
        }</span><span>else</span>{<span>//</span><span> 上传成功 获取<strong>上传文件</strong>信息</span><span>$file</span> = <span>$info</span>['Filedata']['savepath'].<span>$info</span>['Filedata']['savename'<span>];
        }
        </span><span>//</span><span>p($info);</span><span>$data</span> = <span>array</span><span>(
            </span>'file'=>'./Uploads/'.<span>$file</span>,<span>            );
        </span><span>echo</span> json_encode(<span>$data</span><span>);
    }</span>
로그인 후 복사

4. mysql로 ​​데이터 가져오기

<span>//</span><span>导入数据处理</span><span>function</span><span> daoruHandle(){
        </span><span>$file</span> = I('file'<span>);
        </span><span>$excelData</span> = excel_to_mysql(<span>$file</span><span>);
        </span><span>foreach</span>(<span>$excelData</span>['data'] <span>as</span><span>$row</span><span>){
            </span><span>$data</span> = <span>array</span><span>(
                </span>'xuehao'=><span>$row</span>['xuehao'],
                'xingming'=><span>$row</span>['xingming'],
                'xingbie'=>(<span>$row</span>['xingbie']=='男')?1:0,
                'mima'=><span>md5</span>(<span>$row</span>['mima']),<span>                );

            M(</span>'student')->add(<span>$data</span><span>);
        }
        </span><span>echo</span> 1<span>;
    }</span>
로그인 후 복사

5. PHPExcel은 Excel 파일을 읽고 데이터 함수를 반환합니다

<span>function</span> excel_to_mysql(<span>$file</span><span>){
        </span><span>//</span><span>导入PHPExcel第三方类库
        //vendor('PHPExcel.PHPExcel');</span>        import('Classes.PHPExcel',COMMON_PATH,'.php'<span>);
        </span><span>//</span><span>实例化PHPExcel类,用于接收Excel文件</span><span>$PHPExcel</span> = <span>new</span><span> PHPExcel();
        </span><span>//</span><span>读取Excel文件类实例化</span><span>$PHPReader</span> = <span>new</span><span> PHPExcel_reader_Excel5();
        </span><span>//</span><span>检测Excel版本是否可读</span><span>if</span>(!<span>$PHPReader</span>->canRead(<span>$file</span><span>)){
            
            </span><span>$PHPReader</span> = <span>new</span><span> PHPExcel_Reader_Excel2007();
            
            </span><span>if</span>(!<span>$PHPReader</span>->canRead(<span>$file</span>)) <span>return</span><span>array</span>('error'=>1);<span>//</span><span>未知版本的Excel</span><span>        }
        </span><span>//</span><span>读取Excel文件</span><span>$PHPExcel</span> = <span>$PHPReader</span>->load(<span>$file</span><span>);
        </span><span>//</span><span>获得Excel中表的数量</span><span>$sheetCount</span> = <span>$PHPExcel</span>-><span>getSheetCount();
        </span><span>//</span><span>获得第一张工作表</span><span>$sheet</span>=<span>$PHPExcel</span>->getSheet(0<span>);
        </span><span>//</span><span>获得表中最大数据列名</span><span>$column</span> = <span>$sheet</span>-><span>getHighestColumn();
        </span><span>//</span><span>获得表中最大数据行名</span><span>$row</span> = <span>$sheet</span>-><span>getHighestRow();
        </span><span>//</span><span><strong>循环</strong>获得表中数据</span><span>for</span>(<span>$i</span>=1;<span>$i</span><=<span>$row</span>;<span>$i</span>++<span>){
            
            </span><span>$data</span>[] = <span>array</span><span>(
                </span><span>//</span><span>通过工作表<strong>对象</strong>的getCell方法获得单元格 getValue方法获得该单元格数值</span>                'xuehao'=><span>$sheet</span>->getCell('A'.<span>$i</span>)->getValue(),
                
                'xingming'=><span>$sheet</span>->getCell('B'.<span>$i</span>)->getValue(),

                'xingbie'=><span>$sheet</span>->getCell('C'.<span>$i</span>)->getValue(),

                'mima'=><span>$sheet</span>->getCell('D'.<span>$i</span>)->getValue(),<span>
            );
        }
        </span><span>//</span><span>释放工作表<strong>对象</strong></span><span>unset</span>(<span>$sheet</span><span>);
        </span><span>//</span><span>释放读取Excel文件<strong>对象</strong></span><span>unset</span>(<span>$PHPReader</span><span>);
        </span><span>//</span><span>释放Excel文件<strong>对象</strong></span><span>unset</span>(<span>$PHPExcel</span><span>);
        </span><span>//</span><span>返回数据</span><span>return</span><span>array</span>('error'=>0,'data'=><span>$data</span><span>);
    }</span>
로그인 후 복사

위에서 내용을 포함하여 새로고침 없이 데이터를 가져오는 ThinkPHP uploadify upload PHPExcel을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿