2010-07-02 95 views

回答

3

CSV
如果你可以先在Excel文件转换为CSV,你可以使用mysqlimport导入CSV。这可能是将数据导入MySQL的最快捷方法。

您可以使用LOAD DATA INFILE从PHP进行此操作。这是一个示例SQL语句导入data.csv

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

Excel中
如果您不能使用CSV,并需要使用原始Excel文件的工作,你需要一个PHP库,它能够读取Excel文件。

有几个可用的,但我不知道他们是多么可靠或维护多么好:

Pear: Spreadsheet_Excel_Writer

PHPExcel

PHP-ExcelReader

你也可能想看看在使用Excel API的替代方法中,但您需要安装Excel才能执行此操作。有关于这里一点信息:

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

如果使用这种方法,你需要编写一些代码,读取并分析Excel文件,并将其发送到MySQL一行接一行。这可能会比批量CSV导入慢得多。

+0

mysqlimport和LOAD DATA INFILE,只能使用CSV或将其与EXCEl文件一起使用... – 2010-07-02 06:52:48

+0

对不起,我没有说清楚。 'LOAD DATA INFILE'只能用于CSV文件。我已经更新了我的答案。 – Mike 2010-07-02 07:09:30

+0

嘿!谢谢你... @麦克... – 2010-07-02 07:29:57

3

首先,您必须将Excel文件转换为CSV格式(逗号分隔)文件。

然后使用下面的PHP脚本插入它在MySQL:

<?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中输入。

相关问题