使用說明:
1,\應用程序\主頁\控制器\ InoutController.class.php,此文件放到控制器文件夾下,如改過入口文件,則放到相應位置,裏面的導入文件夾根據自己需要更改,如不想刪除導入成功的文件,把unli nk($ file_name);這句刪除
。2,\ Application \ Home \ View \ Inout \ index.php此文件是模板文件,因爲我設的模板後綴名是PHP,所以看下里面的導入導出代碼參考即可。
3,\ ThinkPHP \庫\賣方\ PHPExcel PHPExcel這個文件夾整個放到這裏,看壓縮包的放置位置吧。
Index.php文件:
< 延伸名稱= “公共/ adminbase” /> < 塊名= “標題” >導入導出通訊錄- {$ webset.webname} </ 塊 > < 塊名= “字幕” >通訊錄操作</ 方框 > < 塊名= “rcontent” > < P > < 一個HREF = “{:U( 'INOUT / expUser')}” >導出數據並生成練成</ 一 > </ P > < BR /> <form action = “{:U('Inout / impUser')}”method = “post” enctype = “multipart / form-data” > < input type = “file” name = “import” /> < input type = “hidden” name = “table” value = “tablename” /> < input type = “submit” value = “導入” /> </ form > </ block >
InoutController.class.php文件:
<?php namespace Home \ Controller; 使用 Think \ Controller; 類 InoutController 延伸控制器{ 公共函數 _initialize(){ //如果(會話( '用戶類型')!= 0){ //這- $>錯誤( '此操作需要管理員權限!',U('索引/登錄“),2); //} $ webset = M('Webconfig') - > find(); $ this - > assign('webset',$ webset ); $ usertype = session('usertype'); 開關($ usertype ){ case 0 : 'userid')== 1 ){ $ usertpname = '超級管理員' ; } else { $ usertpname = '管理員' ; } break ; 案例 1 : $ usertpname = '訪問員' ; 休息 ; } $ this - > assign('usertypename',$ usertpname ); } public function index(){ $ this - > assign('current',1 ); $ this - > display(); } public function exportExcel($ expTitle ,$ expCellName ,$ expTableData ){ $ xlsTitle = iconv('utf-8','gb2312',$ expTitle ); //文件名稱 $ fileName = $ expTitle 。日期('_YmdHis'); //或$ xlsTitle文件名稱可根據自己情況設定 $ cellNum = count($ expCellName ); $ dataNum = count($ expTableData ); 供應商(“PHPExcel.PHPExcel” ); $ objPHPExcel = new \ PHPExcel(); $單元名= 陣列('A' ,'B' ,'C' ,'d' ,'E' ,'F' ,'G' ,'H' ,'I' ,'J' ,'K' ,' L,M,N,O,P,Q,R,S,T, X,Y,Z,AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ'); $ objPHPExcel - > getActiveSheet(0 ) - > mergeCells('A1:'。$ cellName [ $ cellNum - 1 ]。'1'); //合併單元格 $ objPHPExcel - > setActiveSheetIndex(0 ) - > setCellValue('A1' ,$ expTitle 。'導出時間:'。日期('YMD H:I:S' )); for($ i = 0 ; $ i < $ cellNum ; $ i ++){ $ objPHPExcel - > 0 ) - > setCellValue($ cellName [ $ i ]。'2',$ expCellName [ $ i ] [ 1 ]); } //雜字形,UTF-8 爲($ I = 0 ; $ I < $ dataNum ; $ I ++){ 對於($Ĵ = 0 ; $Ĵ < $ cellNum ; $Ĵ ++){ $ objPHPExcel - > getActiveSheet(0 ) - > setCellValue($ cellName [ $ j ]。($ i + 3 ),$ expTableData [ $ i ] [ $ expCellName [ $ j ] [ 0 ]]); } } header('pragma:public'); header('Content-type:application / vnd.ms-excel; charset = utf-8; name =''。$ xlsTitle 。' . xls“'); 標題(“Content-Disposition:attachment; filename = $ fileName .xls”); //附件新窗口打印內聯本窗口打印 $ objWriter = \ PHPExcel_IOFactory :: createWriter($ objPHPExcel , 'Excel5'); $ objWriter - > save('php:// output'); 退出 ; } / ** * *導出Excel * / function expUser(){ //導出Excel if(session('userid')!= 1 ){ $ this - > error('此操作需要超級管理員權限!',U ('Index / contacts'),2 ); } $ xlsName = “聯繫人” ; $ xlsCell = array( array('id','賬號序列' array('name','姓名'), array('tname','所屬鄉鎮'), array(' danwei ','單位'), array('phone','電話') ); $ xlsModel = M('Contacts'); $ xlsData = $ xlsModel - > Field('id,tid,name,danwei,phone') - > select(); foreach($ xlsData as $ k =>) ] [ 'tname' ] = Gettname($ v [ 'tid' ]); array_splice($ xlsData [ $ k ] [ 'tid' ]); } $ this - > exportExcel($ xlsName ,$ xlsCell ,$ xlsData ); (); / ** * *顯示導入頁面... * / / **實現導入excel ** / function impUser(){ if(!empty($ _FILES )){ $ upload = new \ Think \ Upload(); //實例化上傳類 $ filepath = './Public/Excle/' ; $ upload - > exts = array('xlsx','xls'); //設置附件上傳類型 $ upload - > rootPath = $ filepath ; //設置附件上傳根目錄 $ upload - > saveName = 'time' ; $ upload - > autoSub = false ; 如果(!$ info = $ upload - > upload()){ $ this - > error($ upload - > getError()); } foreach($ info as $ key => $ value ){ unset($ info ); $ info [ 0 ] = $ value ; $ info [ 0 ] [ 'savepath' ] = $ filepath ; } 供應商(“PHPExcel.PHPExcel”); $ file_name = $ info [ 0 ] [ 'savepath' ]。$ info [ 0 ] [ 'savename' ]; $ objReader = \ PHPExcel_IOFactory :: createReader('Excel5'); $ objPHPExcel = $ objReader - > load($ file_name ,$ encode = 'utf-8'); $ sheet = $ objPHPExcel - > getSheet(0 ); $ highestRow = $ sheet - > getHighestRow(); //取得總行數 $ highestColumn = $ sheet - > getHighestColumn(); //取得總列數 $ j = 0 ; for($ i = 3 ; $ i <= $ highestRow ; $ i ++) { $ data [ 'name' ] = $ objPHPExcel - > getActiveSheet() - > getCell(“B”。$ i ) - > getValue(); $ tname = $ objPHPExcel - > getActiveSheet() - > getCell(“C”。$ i ) - > getValue(); $ data [ 'tid' ] = Gettid($ tname ); $ data [ ' danwei ' ] = $ objPHPExcel - > getActiveSheet() - > getCell(“D”。$ i ) - > getValue(); $ data [ 'phone' “E”。$ i ) - > getValue(); // if(M('Contacts') - > where(“name ='”。$ data ['name']。''and phone = $ data ['phone']“) - > find()){ if(M('Contacts') - > where(“phone ='”。$ data [ 'phone' ]。“'”) - > find()){ //如果存在相同聯繫人。判斷條件:電話兩項一致,上面註釋的代碼是用姓名/電話判斷 } else { M('Contacts') - > add($ data ); $ j ++; } } unlink($ file_name ); ); $ this - > success('導入成功!本次導入聯繫人數量:'。$ j ); } else { $ this - > error(“請選擇上傳的文件”); } } } ?>