public function studentImportExcel(){
if (!empty ( $_FILES)){
$upload = new \Think\Upload(); // 實例化上傳類
$upload->maxSize = 10485760 ; // 設置附件上傳大小
$upload->exts = array('xls','xlsx'); // 設置附件上傳類型
$upload->rootPath = './Public/Excel/'; // 設置附件上傳根目錄
$upload->autoSub = false; // 將自動生成以photo后面加時間的形式文件夾,關閉
// 上傳文件
$info = $upload->upload(); // 上傳文件
$exts = $info['excel']['ext']; // 獲取文件后綴
$filename = $upload->rootPath.$info['excel']['savename']; // 生成文件路徑名
if(!$info) { // 上傳錯誤提示錯誤信息
$this->error($upload->getError());
}else{ // 上傳成功
import("Org.Util.PHPExcel"); // 導入PHPExcel類庫,因為PHPExcel沒有用命名空間,只能inport導入
$PHPExcel = new \PHPExcel(); // 創建PHPExcel對象,注意,不能少了\
if ($exts == 'xls') { // 如果excel文件后綴名為.xls,導入這個類
import("Org.Util.PHPExcel.Reader.Excel5");
$PHPReader = new \PHPExcel_Reader_Excel5();
} else
if ($exts == 'xlsx') {
import("Org.Util.PHPExcel.Reader.Excel2007");
$PHPReader = new \PHPExcel_Reader_Excel2007();
}
$PHPExcel = $PHPReader->load($filename); // 載入文件
$currentSheet = $PHPExcel->getSheet(0); // 獲取表中的第一個工作表,如果要獲取第二個,把0改為1,依次類推
$allColumn = $currentSheet->getHighestColumn(); // 獲取總列數
$allRow = $currentSheet->getHighestRow(); // 獲取總行數
for ($currentRow = 0; $currentRow <= $allRow; $currentRow ++) {// 循環獲取表中的數據,$currentRow表示當前行,從哪行開始讀取數據,索引值從0開始
for ($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn ++) {// 從哪列開始,A表示第一列
$address = $currentColumn . $currentRow; // 數據坐標
$ExlData[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue();// 讀取到的數據,保存到數組$arr中
}
}
$Hint = new \Operation\Controller\HintController(); // 生成操作類對象
$data = studentImportExcel_RAW($ExlData); // 調用公用方法的讀數組並寫入數據庫操作
$users = M('users'); // 生成數據庫對象
$result = $users->addAll($data); // 批量寫入數據庫
if ($result) { // 驗證
$Hint->mysuccee("導入成功", "2", "Admin/Users/studentManage");// 跳轉學生管理頁面
} else {
$Hint->myerror("導入失敗,原因可能是excel表中有些用戶已被注冊。或表格格式錯誤","5");// 提示錯誤
}
}
}else {
$this->display();
}
}
function studentImportExcel_RAW($ExlData){ // 將導入表中的數據添加到 數據庫數組中去
$Hint = new \Operation\Controller\HintController(); // 生成操作類對象
for($i = 2,$j=0;$i<sizeof($ExlData);$i++,$j++){
$dataList[] = array(
'username'=>$ExlData[$i]['A'],
'pwd' =>MD5(11),
'realname'=>$ExlData[$i]['B'],
'stunum' =>$ExlData[$i]['C'],
'email' =>$ExlData[$i]['D'],
'phone' =>$ExlData[$i]['E'],
'photo' =>$Hint->randPhoto(),
'role' =>'1',
'intro' =>'這家伙很懶什么都沒留下',
'regdate' =>date('Y-m-d H:i:s', time()) // 寫入注冊時間
);
}
return $dataList;
}