<?phpif($_POST['file_stu'] == "true"){ $filename = $_FILES['inputExcel']['name']; $tmp_name = $_FILES['inputExcel']['tmp_name']; $msg = uploadFile($filename,$tmp_name); echo $msg;}//匯入Excel檔案function uploadFile($file,$filetempname){ //自己設定的上傳檔案存放路徑 $filePath = 'upFile/'; $str =""; //下面存放excel路徑 require_once 'PHPExcel/PHPExcel.php'; require_once 'PHPExcel/IOFactory.php'; require_once 'PHPExcel/Reader/Excel5.php'; //注意設定時區 $time=date("y-m-d-H-i-s");//去當前上傳的時間 //擷取上傳檔案的副檔名 $extend=strrchr ($file,'.'); //上傳後的檔案名稱 $name=$time.$extend; $uploadfile=$filePath.$name;//上傳後的檔案名稱地址 //move_uploaded_file() 函數將上傳的檔案移動到新位置。若成功,則返回 true,否則返回 false。 $result=move_uploaded_file($filetempname,$uploadfile);//假如上傳到目前的目錄下 echo $result; if($result) //如果上傳檔案成功,就執行匯入excel操作 { include "../data/common.inc.php"; $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format $objPHPExcel = $objReader->load($uploadfile); $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); //取得總行數 $highestColumn = $sheet->getHighestColumn(); //取得總列數 // 迴圈讀取excel檔案,讀取一條,插入一條 for($j=1;$j<=$highestRow;$j++) //從第一行開始讀取資料 { for($k='A';$k<=$highestColumn;$k++) //從A列讀取資料 { //這種方法簡單,但有不妥,以'\\'合并為數組,再分割\\為欄位值插入到資料庫 //實測在excel中,如果某儲存格的值包含了\\匯入的資料會為空白 $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\\';//讀取儲存格 } echo $str; die(); //explode:函數把字串分割為數組。 $strs = explode("\\",$str);print_r($strs);exit; $sql = "insert into dede_arctype(`reid` ,`topid` ,`sortrank` ,`typename` ,`typedir` ,`isdefault` ,`defaultname` ,`issend`)values ('".$strs[0]."','".$strs[1]."','". $strs[2]."','". $strs[3]."','". $strs[4]."','". $strs[5]."','". $strs[6]."','". $strs[7]."')"; } unlink($uploadfile); //刪除上傳的excel檔案 $msg = "匯入成功!";}}/*class ExcelToArrary {public function __construct() { //匯入phpExcel核心類 注意 :你的路徑跟我不一樣就不能直接複製 include_once('Classes/PHPExcel.php');}//*//* 讀取excel $filename 路徑檔案名稱 $encode 返回資料的編碼 預設為utf8//*以下基本都不要修改public function read($filename,$encode='utf-8'){$objReader = PHPExcel_IOFactory::createReader('Excel5'); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($filename); $objWorksheet = $objPHPExcel->getActiveSheet(); $highestRow = $objWorksheet->getHighestRow(); $highestColumn = $objWorksheet->getHighestColumn(); $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); excelData==array();for ($row = 1; $row <= $highestRow; $row++) { for ($col = 0; $col < $highestColumnIndex; $col++) { $excelData[$row][] =(string)$objWorksheet->getCellByColumnAndRow($col, $row)->getValue(); } } return $excelData; } }if (! empty ( $_FILES ['file_stu'] ['name'] )) { $tmp_file = $_FILES ['file_stu'] ['tmp_name']; $file_types = explode ( ".", $_FILES ['file_stu'] ['name'] ); $file_type = $file_types [count ( $file_types ) - 1]; //判別是不是.xls檔案,判別是不是excel檔案 /* if (strtolower ( $file_type ) != "xls") { $this->error ( '不是Excel檔案,重新上傳' ); }*/ //設定上傳路徑/* $savePath ='/upFile/'; //以時間來命名上傳的檔案 $str = date ( 'Ymdhis' ); file_name== $str . "." . $file_type; //是否上傳成功 if (! copy ( $tmp_file, $savePath . $file_name )) { $this->error ( '上傳失敗' ); } //*對上傳的Excel資料進行處理產生編程資料,這個函數會在下面第三步的ExcelToArray類中 //注意:這裡調用執行了第三步類裡面的read函數,把Excel轉化為數組並返回給$res,再進行資料庫寫入 $res =Service('ExcelToArray')->read($savePath . $file_name ); //重要代碼 解決Thinkphp M、D方法不能調用的問題 //如果在thinkphp中遇到M 、D方法失效時就加入下面一句代碼 spl_autoload_register ( array ('Think', 'autoload' ) ); //對產生的數組進行資料庫的寫入 foreach ( $res as $k => $v ) { if ($k != 0) { $data ['uid'] = $v [0]; $data ['password'] = sha1 ( '111111' ); $data ['email'] = $v [1]; $data ['uname'] = $v [3]; $data ['institute'] = $v [4]; $result = M ( 'user' )->add ( $data ); if (! $result) { $this->error ( '匯入資料庫失敗' ); } } }}*/?>
<h3>匯入Excel表:</h3>
<form method="post" action="excel_add.php" enctype="multipart/form-data">
<input type="hidden" name="inputExcel" value="true" />
<input type="file" name="file_stu"/>
<input type="submit" value="update" />
</form>