ThinkPHP导入Excel
前面写过一篇PHP读取EXCEL插入Mysql数据库中,应用phpExcelReader导入, 这次做毕业设计时用的ThinkPHP,有个上传学生信息(excel)插入数据库的功能,其实原理一样,先是上传,然后读取内容,然后根据phpExcelReader的read读取各sheet值然后插入数据库。其代码为:
import.html
1 2 3 4 5 6 7 | <form method="post" action="__URL__/import" name="form1" enctype="multipart/form-data">
<table cellspacing="0" cellpadding="0" border="1">
<tr>
<td ><input type="file" name="myfile" /> <input type="submit" class="mybutton" name="import" value="导入" ></td>
</tr>
</table>
</form> |
StudentsAction.class.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | class StudentsAction extends Action { public function import() { header("Content-Type:text/html; charset=utf-8"); Vendor('Excel.reader'); // 加载reader类。 if(!$this->isPost()) { $this->display(); } else { if($_FILES['myfile']['name']!='') { $tmp_file=$_FILES['myfile']['tmp_name']; $file_types=explode(".",$_FILES['myfile']['name']); $file_type=$file_types[count($file_types)-1]; if(strtolower($file_type)!="xls"){ // echo "<span style=\"color:red;line-height: 25px;\">格式错误 <a href=\"#\" onclick=history.go(-1);>请返回</a> </span>"; $this->assign('jumpUrl',__URL__/import); $msg="格式错误,请重新上传"; $this->success($msg); } $savePath="Excel/xls/"; $str = date('Ymdhis'); $file_name=$str.".".$file_type; if(!copy($tmp_file,$savePath.$file_name)){ //echo "<span style=\"color:red;line-height: 25px;\">上传错误请重试!!<a href=# onclick=history.go(-1);>[返回]</a></span>"; $this->assign('jumpUrl',__URL__/import); $msg="上传错误,请重新上传"; $this->success($msg); }else{ $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('utf-8'); $data->read("Excel/xls/".$file_name); for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) { $number=$data->sheets[0]['cells'][$i][1]; $passwd=$data->sheets[0]['cells'][$i][1]; $name=$data->sheets[0]['cells'][$i][2]; $catid=$data->sheets[0]['cells'][$i][3]; $sex=$data->sheets[0]['cells'][$i][4]; $tel=$data->sheets[0]['cells'][$i][5]; $home=$data->sheets[0]['cells'][$i][6]; $minzu=$data->sheets[0]['cells'][$i][7]; $Students=D("Students"); $info=array( 'number'=>$number, 'passwd'=>$passwd, 'name'=>$name, 'catid'=>$catid, 'sex'=>$sex, 'tel'=>$tel, 'home'=>$home, 'minzu'=>$minzu, ); $Students->create($info); $Students->add(); } $this->assign('jumpUrl',__URL__); $msg="学生信息导入成功"; $this->success($msg); } } } } } |
按照楼主的做法 结果thinkphp 出现了表单令牌错误 郁闷~
@donneyming
不会的。测试能使用,你在配置文件里设置 ‘TOKEN_ON’=>false, 试试。