在開發PHP程序時,很多時候我們會有將數據批量導入數據庫的需求,如學生信息批量添加到數據庫中,而事先用excel編排好,對excel實行操作,便是我們比較常用的選擇方式。
在對excel的操作中,phpExcelReade便是很多人的共同選擇。在具體實現中,我們可以以文件上傳方式將excel文件上傳到服務器中的某個位置,通過以下操作將excel中的數據導入到數據庫后,在將上傳的文件刪除即可。
代碼如下:
$dir=dirname(__FILE__); //獲取當前腳本的絕對路徑 $dir=str_replace(“//”,”/”,$dir).”/”; $filename=’uploadFile.xls'; //可以定義一個上傳后的文件名稱 $result=move_uploaded_file($_FILES[‘upload’][‘tmp_name’],$dir.$filename);//假如上傳到當前目錄下 if($result) //如果上傳文件成功,就執行導入excel操作 { require_once ‘phpExcelReader/Excel/reader.php'; $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding(‘utf-8′);//設置在頁面中輸出的編碼方式,而不是utf8 //該方法會自動判斷上傳的文件格式,不符合要求會顯示錯誤提示信息(錯誤提示信息在該方法內部)。 $data->read(“$filename”); //讀取上傳到當前目錄下名叫$filename的文件 error_reporting(E_ALL ^ E_NOTICE); //如果excel表帶標題,則從$i=2開始,去掉excel表中的標題部分(要將$i<=改為$i<否則會插入一條多余的空數據) for ($i = 2; $i < $data->sheets[0][‘numRows’]; $i++) { $sql = “INSERT INTO user (stuid,class,name,sex,classNum,tel,addr,remark) VALUES(‘”. $data->sheets[0][‘cells’][$i][1].”‘,'”. //學號 $data->sheets[0][‘cells’][$i][2].”‘,'”. //班級 $data->sheets[0][‘cells’][$i][3].”‘,'”. //姓名 $data->sheets[0][‘cells’][$i][4].”‘,'”. //性別 $data->sheets[0][‘cells’][$i][5].”‘,'”. //班內序號 $data->sheets[0][‘cells’][$i][6].”‘,'”. //聯系電話 $data->sheets[0][‘cells’][$i][7].”‘,'”. //聯系地址 $data->sheets[0][‘cells’][$i][8].”‘)”; //附注 $db->query($sql); $insert_info.= ” $sql</br>/n”; //可以用來顯示數據插入的信息 } $totalNums=$data->sheets[0][‘numRows’]-2;//求出導入的總數據條數(這里是減去2,才會得到去除標題后的總數據) //echo “導入成功!”; unlink(“$filename”); //刪除上傳的excel文件 } else { $errmsg=”上傳失敗”; }