我想使用PHP从excel文件导入数据,然后如果可能,将其保存到MySQL数据库。
答案 0 :(得分:19)
从Excel文件导入(XLS)比从CSV文件中导入更难。通常我使用Excel将我的XLS保存为CSV,然后使用PHP处理此CSV ...
查看PHP函数fgetcsv: http://ca.php.net/manual/en/function.fgetcsv.php
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
如果你仍然希望直接从PHP加载XLS,那么可能(但是多么可靠)......快速搜索http://sourceforge.net/projects/phpexcelreader/会产生帮助。
答案 1 :(得分:8)
很可能。您可以将Excel文件另存为CSV文件,并使用fgetcsv()将该文件读入PHP。 fgetcsv()
会将您的数据解析为一个数组,然后您可以创建SQL查询以放入数据库。
如果您所做的只是将其放入数据库中,您可以完全避免使用PHP脚本,而只需在CSV文件中使用MySQL的LOAD DATA INFILE
语法:
LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3);
答案 2 :(得分:0)
最好的办法是从Excel导出为CSV(逗号分隔值)文件。这些文件易于解析和加载。如果您直接从XLS文件中读取,我不知道该怎么做。您可能希望查看是否存在可以读取Excel数据文件的PHP库。
答案 3 :(得分:0)
Here是一个直接读/写Excel电子表格的教程(无需导出为CSV)。必要的软件包可以从SourceForge和PEAR获得(参见文章)。
答案 4 :(得分:-1)
<?
i$db = mysql_connect(“localhost”, “root”, “”) or die(“Could not connect.”);
if(!$db)
die(“no db”);
if(!mysql_select_db(“test”,$db))
die(“No database selected.”);
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen(“$filename”, “r”);
while (($data = fgetcsv($handle, 1000, “,”)) !== FALSE)
{
$import=”INSERT into sample(name,email) values(‘$data[0]‘,’$data[1]‘)”;
mysql_query($import) or die(mysql_error());
}
fclose($handle);
print “Import done”;
}
else
{
print “<form action=’import.php’ method=’post’>”;
print “Type file name to import:<br>”;
print “<input type=’text’ name=’filename’ size=’20′><br>”;
print “<input type=’submit’ name=’submit’ value=’submit’></form>”;
}
?>