phpexcel匯入excel到資料庫

來源:互聯網
上載者:User
<?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>

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.