我有一个包含数据(电话号码列表)的Excel文件,并且我希望使用PHP代码将Excel文件中的数据导入我的数据库表(例如称为phonenumber_list)?我知道如何将MySQl转换为Excel,但是可以反向使用吗?请帮忙!如何使用PHP将Excel或CSV上传到MySQL数据库?
0
A
回答
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
你也可能想看看在使用Excel API的替代方法中,但您需要安装Excel才能执行此操作。有关于这里一点信息:
http://www.sydphp.org/presentations/010606-excel.html
如果使用这种方法,你需要编写一些代码,读取并分析Excel文件,并将其发送到MySQL一行接一行。这可能会比批量CSV导入慢得多。
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中输入。
相关问题
- 1. 使用PHP将Excel或CSV文件上传到MySQL
- 2. 使用PHP将CSV文件上传到mysql数据库
- 3. 如何将图像上传到MySQL数据库使用PHP/Flex
- 4. Excel CSV到Mysql数据库
- 5. 如何更快地将csv文件上传到mysql数据库
- 6. 如何使用codeigniter将CSV文件的数据上传到mysql
- 7. 使用PHP将CSV文件上传到数据库时出错
- 8. 无法使用PHP将.csv文件上传到数据库?
- 9. 如何使用php将excel文件导入到mySQL数据库
- 10. 如何使用jsp和servlet将多个csv文件上传到mysql数据库?
- 11. 通过csv将大量数据上传到mysql WordPress数据库?
- 12. 如何在上传到数据库时过滤csv(excel文件)
- 13. 将分隔的excel数据上传到MySQL数据库中
- 14. 使用PHP将照片上传到Mysql数据库中
- 15. 使用PHP将多个图像上传到MYSQL数据库中
- 16. 使用PHP将文件上传到MySQL数据库
- 17. 如何使用ajax将图像上传到MySql数据库......?
- 18. 使用JSP将Excel数据上传到Oracle数据库中
- 19. 使用java将数据从excel文件上传到数据库
- 20. 使用PHP/MySQL上传CSV上传
- 21. 如何使用php将数据从excel导入到mysql数据库
- 22. 如何使用php脚本将图像上传到数据库?
- 23. 将Excel文件上传到数据库
- 24. PHP表单上传到MySQL数据库
- 25. PHP上传文件到MySQL数据库
- 26. 上传一个csv并将其导入到mysql数据库中
- 27. 将大型CSV文件上传到Mysql数据库
- 28. 如何通过使用php传递数据库到excel?
- 29. csv文件格式上传大量的数据在MySQL数据库使用php
- 30. excel文件上传到数据库使用Php
mysqlimport和LOAD DATA INFILE,只能使用CSV或将其与EXCEl文件一起使用... – 2010-07-02 06:52:48
对不起,我没有说清楚。 'LOAD DATA INFILE'只能用于CSV文件。我已经更新了我的答案。 – Mike 2010-07-02 07:09:30
嘿!谢谢你... @麦克... – 2010-07-02 07:29:57