2014-04-12 6 views
0

PHP를 사용하여 mysql로 ​​데이터를 가져오고 싶습니다. 내 프로그램은 하드 코딩 된 파일로 Excel 파일의 경로를 작성한 경우 오류없이 작동합니다. 하지만 그 시간에 업로드 기능을 사용하여 그것을 사용하려고하는 경우 하나의 오류에 직면하고있다. 내 오류는 다음과 같습니다. :PHP를 사용하여 mysql로 ​​데이터를 엑셀로 가져오고 싶습니다.

파일 이름 C : \ WAMP \ TMP php1FC.tmp \ 나는 또한 참조를 위해 내 코드를 제공하고

읽을 수 없습니다 :

include 'config.php'; 
require_once 'Excel/reader.php'; 
$allowedExts = array("xls","xlsx"); 
$temp = explode(".", $_FILES["file"]["name"]); 

    if (in_array($extension, $allowedExts)) 
      { 
      if ($_FILES["file"]["error"] > 0) 
      { 
      echo "Error: " . $_FILES["file"]["error"] . "<br>"; 
      } 
      else 
      { 
      $filename=$_FILES["file"]["name"] ; 
      $filetype=$_FILES["file"]["type"] ; 
      $filesize=$_FILES["file"]["size"] ; 
      $filetemp=$_FILES["file"]["tmp_name"]; 


       if (file_exists("upload/" . $_FILES["file"]["name"])) 
       { 
        echo $_FILES["file"]["name"] . " already exists. "; 
       } 
       else 
       { 
        move_uploaded_file($_FILES["file"]["tmp_name"], 
        "upload/" . $_FILES["file"]["name"]); 
        echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
       } 

       $handle = fopen($filetemp, "r"); 

       $data = new Spreadsheet_Excel_Reader(); 
       $data->read($filetemp); 
      $numr=$data->sheets[0]['numRows']; 
       for ($i = 2; $i <= $numr ; $i++) 
       { 
       $gender=$data->sheets[0]['cells'][$i][1]; 
         $txtname=$data->sheets[0]['cells'][$i][2]; 
       $txtusername = $data->sheets[0]['cells'][$i][3]; 
         $txtphone=$data->sheets[0]['cells'][$i][4]; 
         $txtlandno=$data->sheets[0]['cells'][$i][5];    
         $txtwing=$data->sheets[0]['cells'][$i][6]; 
         $txtemail=$data->sheets[0]['cells'][$i][7];    
         $txtflat=$data->sheets[0]['cells'][$i][8]; 
         $intercom=$data->sheets[0]['cells'][$i][9]; 
         $userstatus=$data->sheets[0]['cells'][$i][10]; 
         $livestatus=$data->sheets[0]['cells'][$i][11];     
         $flattype=$data->sheets[0]['cells'][$i][12]; 
         $area1=$data->sheets[0]['cells'][$i][13]; 
         $txtbuilding=$data->sheets[0]['cells'][$i][14]; 
         $housingloan=$data->sheets[0]['cells'][$i][15]; 
         $txtparking=$data->sheets[0]['cells'][$i][16]; 
         $principalopBal=$data->sheets[0]['cells'][$i][17]; 
         $interestBal=$data->sheets[0]['cells'][$i][18]; 
         $servicetax=$data->sheets[0]['cells'][$i][19]; 

         $txtgym=$data->sheets[0]['cells'][$i][20]; 
         $txtcable=$data->sheets[0]['cells'][$i][21]; 
         $txtswim=$data->sheets[0]['cells'][$i][22]; 
         $txtclub=$data->sheets[0]['cells'][$i][23]; 
         $unittype=$data->sheets[0]['cells'][$i][24]; 

내가 무슨 문제를 이해 해달라고. 이 가져 오기 Excel 기능을 수행하고 싶습니다. 그리고 나는 사용자가 자신의 엑셀 파일을 업로드 할 수 있기를 원한다. 그래서이 문제를 도와주세요.

답변

0

move_uploaded_file이 호출 된 후에 더 이상 존재하지 않는 임시 파일을 열려고합니다.

move_uploaded_file($_FILES["file"]["tmp_name"],"upload/" . $_FILES["file"]["name"]); 

"upload /"를 열어야합니다. $ _FILES [ "file"] [ "name"]. (왜 당신이 그것을 만든 $ 파일 이름을 사용합니까?) 또한

을, 당신은 핸들러를 다음 만들 이유를 읽어 $ 데이터 -에 존재하지 않는 같은 파일 이름>()을 전달하는? $ data-> read()$ handle 또는 $ 파일 이름을 사용해야합니까? 그것도 확인하십시오.


가 그냥 다른 옵션을 추가, MySQL은 엑셀에 대한 MySQL이라는 파일에 직접 테이블을 연결하는 깔끔한 엑셀 도구/플러그인을 가지고있다.

자세한 정보 : http://dev.mysql.com/doc/refman/5.7/en/mysql-for-excel.html

+0

고마워. 내 문제가 해결 됐어. –

0

$ allowedExts 배열에 ".tmp"가 있습니까? 스크립트의 나머지 부분을 포함하고 "C : \ wamp \ tmp \ php1FC.tmp 파일 이름을 읽을 수 없습니다"라는 출력 줄을 확인하십시오.

+0

번호는 $ allowedExts에 있으며 두 가지 값만 있습니다. .xls 및 .xlsx –

+0

글쎄, 그게 당신의 첫 번째 문제일까요? 업로드 할 때 파일 이름 확장자는 .xls 또는 .xlsx입니까? 오류는 .tmp 확장자 파일을 표시합니다. – PressingOnAlways

+0

예. 파일을 업로드 한 후 확장자는 .xls입니다. 나는 .xls 확장자로만 엑셀 파일을 가져오고있다. –

관련 문제