2010-07-02 3 views
0

데이터 (전화 번호 목록)가 포함 된 Excel 파일이 있는데 그 데이터를 PHP 코드를 사용하여 내 데이터베이스 테이블 (예 : phonenumber_list)로 가져 오기를 원합니다. MySQl을 Excel로 변환하는 방법을 알고 있지만 역순으로 변환 할 수 있습니까? 도와주세요! 먼저 CSV로 Excel 파일을 변환 할 수 있습니다 경우PHP를 사용하여 MySQL 데이터베이스에 Excel 또는 CSV를 업로드하는 방법은 무엇입니까?

답변

3

CSV
, 당신은 CSV를 가져올 mysqlimport를 사용할 수 있습니다. 아마 MySQL로 데이터를 가져 오는 가장 빠른 방법 일 것입니다.

LOAD DATA INFILE을 사용하여 PHP에서이를 수행 할 수 있습니다. 이 data.csv 가져올 수있는 샘플 SQL 문입니다 : 당신이 CSV를 사용하고 원시 엑셀 파일로 작업 할 필요가없는 경우

LOAD DATA INFILE 'data.csv' INTO TABLE phonenumber_list 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
IGNORE 1 LINES; 

엑셀
을, 당신은 엑셀 파일을 읽을 수있는 PHP 라이브러리가 필요합니다 .

몇 사용할 수 있습니다,하지만 난 그들이 얼마나 신뢰할 수있는 또는 얼마나 잘 유지 모른다 :

Pear: Spreadsheet_Excel_Writer

PHPExcel

PHP-ExcelReader

당신은 또한보고 할 수 있습니다 엑셀 API를 사용하는 대안적인 접근법에서,하지만 그렇게하기 위해서는 엑셀이 설치되어 있어야합니다. 여기에 대한 약간의 정보가있다 :

http://www.sydphp.org/presentations/010606-excel.html

이 방법을 사용하면 읽기 및 Excel 파일을 구문 분석하고, MySQL로 행 단위를 보냅니다 코드를 작성해야합니다. 이것은 대량 CSV 가져 오기보다 훨씬 느리게 작동 할 수 있습니다.

+0

mysqlimport와 LOAD DATA INFILE은 CSV 만 사용하거나 EXCEl 파일에서도 작동합니다 ... –

+0

죄송합니다. 분명히하지 않았습니다. 'LOAD DATA INFILE'은 CSV 파일에서만 작동합니다. 나는 나의 대답을 업데이트했다. – Mike

+0

안녕하세요! 감사합니다 ... @ 마이크 ... –

3

먼저 Excel 파일을 CSV 형식 (쉼표로 구분) 파일로 변환해야합니다.

는 다음의 MySQL에 삽입하기 위해 다음과 같은 PHP 스크립트를 사용 :

<?php 
error_reporting(E_ALL & ~E_NOTICE); 
$connect = mysql_connect("localhost","root",""); 
@mysql_select_db("dbname"); 

[email protected]$_FILES[csv][name]; 
$ext=end(explode('.',$inputFile)); 

if($ext=='csv') 
{ 
    [email protected]$_FILES[csv][tmp_name]; 
    $f = @fopen($tmpFile, 'r'); 
    $contents = @fread($f, 10000); 
    fclose($f); 
    $fileLines = explode("\r\n", $contents); // explode to make sure we are only using the first line. 
    $fieldList_header = explode(',', $fileLines[0]); 
    $csv_header=array("ID","Name","Address","Email-Id","Contact-No"); // Excel file heading 

    $i=0; 
    //index keys for each column 
    $ID_key=null; 
    $Name_key=null; 
    $Address_key=null; 
    $Email_ID_key=null; 
    $Contact_No_key=null; 

    foreach($csv_header as $csv) 
    { 
     //searching index for each value 
     if(in_array($csv,$fieldList_header)) 
     { 
      $key=array_search($csv,$fieldList_header); 

      if($i==0) 
       $ID_key=$key; 
      if($i==1) 
       $Name_key=$key; 
      if($i==2) 
       $address_key=$key; 
      if($i==3) 
       $Email_ID_key=$key; 
      if($i==4) 
       $Contact_No_key=$key; 
     } 
     else 
     { 
      echo "Failed to search : ".$csv." blank space will be inserted.<br>"; 
     } 
     $i++; 
    } 
    echo "<table border=1px>"; 
    echo "<tr>"; 
     echo "<td>"; 
      echo "Id"; 
     echo "</td>"; 
     echo "<td>"; 
      echo "Name"; 
     echo "</td>"; 
     echo "<td>"; 
      echo "Address"; 
     echo "</td>"; 
     echo "<td>"; 
      echo "Email ID"; 
     echo "</td>"; 
     echo "<td>"; 
      echo "Contact No"; 
     echo "</td>"; 
    echo "</tr>"; 
    $j=1; 
    for($i=2;$i<count($fileLines)-1;$i++) 
    { 

     $fieldList_other = explode(',', $fileLines[$i]); 
     echo "<tr>"; 
      echo "<td>"; 
       echo $fieldList_other[$ID_key]; 
      echo "</td>"; 
      echo "<td>"; 
       echo $fieldList_other[$Name_key]; 
      echo "</td>"; 
      echo "<td>"; 
       echo $fieldList_other[$Address_key]; 
      echo "</td>"; 
      echo "<td>"; 
       echo $fieldList_other[$Email_ID_key]; 
      echo "</td>"; 
      echo "<td>"; 
       echo $fieldList_other[$Contact_No_key]; 
      echo "</td>"; 
     echo "</tr>"; 

     $query="insert into Contact (EmployeeName,DateOfJoining,SalaryPerDay,Address,Designation,BalanceLeaves,ContactNumber) values('$fieldList_other[$ID_key]','$fieldList_other[$Name_key]','$fieldList_other[$Address_key]','$fieldList_other[$Email_ID_key]','$fieldList_other[$Contact_No_key]')"; 

     $result=mysql_query($query); 
     if(!$result) 
      echo "Record $j failed.<br>"; 
     else 
      echo "Record $j inserted in database."; 
     $j++; 
    } 
    echo "</table>";  
} 
?> 




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
     <title>Import a CSV File with PHP & MySQL</title> 
     <script> 
      <!-- 
      function noempty() 
      { 
      var y=document.forms["form1"]["csv"].value; 
      if (y==null || y=="") 
       { 
       alert("Please enter the required field"); 
       return false; 
       } 

      } 
      --> 
     </script> 
    </head> 
<body> 
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
<center> 
</br></br> 
    Choose your file: <br /> 
    <input name="csv" type="file" id="csv" /> 
    <input type="submit" name="Submit" value="Submit" onclick="return noempty()"/> 
    </center> 
</form> 
</body> 

</html> 

이 스크립트는 당신에게 도움이 될 것입니다. Excel 파일 열의 순서가 어떻든간에 각각의 데이터는 MySQL에만 입력되기 때문입니다.

관련 문제