您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“tp怎么實(shí)現(xiàn)excel的導(dǎo)入和導(dǎo)出”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一:下載phpExcel第三方類庫(kù)
下載地址:http://www.thinkphp.cn/topic/14005.html下載官方網(wǎng)站;
二:下載成功之后將文件放到Vendor下:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
三:配置數(shù)據(jù)庫(kù)的信息操作(我的是在home文件夾下(application/home/config/config.php)添加如下配置):
<?php return array( //'配置項(xiàng)'=>'配置值' 'DB_TYPE' => 'mysql', // 數(shù)據(jù)庫(kù)類型 'DB_HOST' => 'localhost', // 服務(wù)器地址 'DB_NAME' => 'db_oa', // 數(shù)據(jù)庫(kù)名 'DB_USER' => 'root', // 用戶名 'DB_PWD' => 'root', // 密碼 'DB_PORT' => 3306, // 端口 'DB_PREFIX' => 'tg_', // 數(shù)據(jù)庫(kù)表前綴 // 'DB_FIELDS_CACHE' => false, // 啟用字段緩存(開(kāi)發(fā)時(shí)這個(gè)要寫成false) ) ?>
四:模板代碼:
<html> <head> </head> <body> <P><a href="{:U('Index/expUser')}" >導(dǎo)出數(shù)據(jù)并生成excel</a></P><br/> <form action="{:U('Index/impUser')}" method="post" enctype="multipart/form-data"> <input type="file" name="import"/> <input type="hidden" name="table" value="tablename"/> <input type="submit" value="導(dǎo)入"/> </form> </body> </html> <?php ?>
實(shí)現(xiàn)功能的控制器方法:
1>導(dǎo)出數(shù)據(jù)方法的實(shí)現(xiàn):
function expUser(){//導(dǎo)出Excel //獲取表頭名: $xlsName = "evaluate_check"; //獲取文件里面具體的數(shù)據(jù) $xlsCell = array('教師檢查作業(yè)表', '所屬功能','所屬權(quán)限','所屬學(xué)生','學(xué)生答案' ); // 連接數(shù)據(jù)庫(kù)找到查詢的表 $xlsModel = M('evaluate_check'); // 通過(guò)調(diào)用select方法field查找數(shù)據(jù)表里面的字段 $xlsData = $xlsModel->Field('id,tep_id,tet_id,student_id,student_anwser')->select(); $this->exportExcel($xlsName,$xlsCell,$xlsData); } public function exportExcel($expTitle,$expCellName,$expTableData){ // 抓取文件名將字符編碼轉(zhuǎn)換成utf8格式 $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名稱 // 命名Excel文件的文件名稱,通過(guò)時(shí)間函數(shù)隨即打亂 $fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名稱可根據(jù)自己情況設(shè)定 //通過(guò)count函數(shù)獲取到字段的行數(shù) $cellNum = count($expCellName); //獲取具體的值 $dataNum = count($expTableData); // var_dump(count($expTableData));exit; //引入具體的類庫(kù) vendor("PHPExcel.PHPExcel"); // echo '111111dfgfhj';exit; //實(shí)例化方法,得到所有的方法; $objPHPExcel = new \PHPExcel(); //設(shè)置單元格的行數(shù) $cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','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'); // var_dump($cellName);exit; // var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit; $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并單元格 // echo '1111111';exit; // var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit; // $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s')); //對(duì)獲取的行號(hào)進(jìn)行循環(huán)遍歷并且賦值 for($i=0;$i<$cellNum;$i++){ $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i]); } $objPHPExcel->getActiveSheet()->setTitle($expTitle); $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle); // Miscellaneous glyphs, UTF-8 // var_dump($dataNum);exit; //對(duì)獲取的列好進(jìn)行遍歷賦值輸出 for($i=0;$i<$dataNum;$i++){ for($j=0;$j<$cellNum;$j++){ $a = array_values($expTableData[$i]) ; $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$a[$j]); } } ob_end_clean();//清楚緩沖避免亂碼 header('pragma:public'); //設(shè)置表頭信息 header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"'); header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印 //通過(guò)調(diào)用如下方法來(lái)創(chuàng)建Excel將值寫入 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //進(jìn)行保存下載 $objWriter->save('php://output'); exit; }
3>導(dǎo)入數(shù)據(jù)方法的實(shí)現(xiàn):
(1)選取你要導(dǎo)入的xls文件,進(jìn)行操作
(2)代碼如下:
function impUser(){ //判斷你的文件是否為空 if (!empty($_FILES)) { // 引入類庫(kù) vendor("PHPExcel.PHPExcel"); //獲取存儲(chǔ)文件的文件名 $file_name=$_FILES['import']['tmp_name']; //調(diào)用如下方法來(lái)讀取你表里面的信息 $objReader = \PHPExcel_IOFactory::createReader('Excel5'); // var_dump($objReader);exit; //讀取到的臨時(shí)文件名的信息 $objPHPExcel = $objReader->load($file_name,$encode='utf-8'); //獲取Excel表格的列數(shù) $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); // 取得總行數(shù) $highestColumn = $sheet->getHighestColumn(); // 取得總列數(shù) // 將值進(jìn)行寫入 for($i=3;$i<=$highestRow;$i++) { $data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue(); $sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue(); // $data['res_id'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue(); $data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue(); $data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue(); $data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue(); $data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue(); $data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue(); $data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue(); $data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue(); $data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue(); $data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue(); $data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue(); $data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue(); $data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue(); $data['sex']=$sex=='男'?1:0; $data['res_id'] =1; $data['last_login_time']=0; $data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR']; $data['login_count']=0; $data['join']=0; $data['avatar']=''; $data['password']=md5('123456'); //通過(guò)以下方法,將值添加到數(shù)據(jù)庫(kù)中; M('Member')->add($data); } $this->success('導(dǎo)入成功!'); }else { $this->error("請(qǐng)選擇上傳的文件"); } }
說(shuō)明:最后的數(shù)據(jù)庫(kù)信息以你具體的表信息為主,在M(‘表明’)->add($data);
$data里面的數(shù)據(jù)也以你真實(shí)的表為基礎(chǔ)
“tp怎么實(shí)現(xiàn)excel的導(dǎo)入和導(dǎo)出”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。