6

我想使用 PHP 从 excel 文件中导入数据,然后如果可能的话,将其保存到 MySQL 数据库中。

4

5 回答 5

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/这可能会有所帮助。

于 2010-01-14T19:34:54.140 回答
8

很有可能。您可以将 Excel 文件保存为 CSV 文件,然后使用fgetcsv()将该文件读入 PHP。 fgetcsv()会将您的数据解析为一个数组,然后您可以从中创建 SQL 查询以放入您的数据库。

如果您所做的只是将其放入数据库中,那么您也许可以完全绕过对 PHP 脚本的需求,而只需LOAD DATA INFILE在 CSV 文件上使用 MySQL 的语法:

LOAD DATA LOCAL INFILE '/importfile.csv'
INTO TABLE test_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, filed2, field3);
于 2010-01-14T19:36:51.147 回答
0

最好的办法是从 Excel 导出到 CSV(逗号分隔值)文件。这些文件易于解析和加载。如果您直接从 XLS 文件中读取,我不知道该怎么做。您可能想查看是否有可以读取 Excel 数据文件的 PHP 库。

于 2010-01-14T19:34:17.033 回答
0

是一个关于直接读/写 Excel 电子表格的教程(无需导出为 CSV)。SourceForge 和 PEAR 提供了必要的软件包(参见文章)。

于 2010-01-14T19:42:18.607 回答
-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 “&lt;form action=’import.php’ method=’post’&gt;”;

print “Type file name to import:<br>”;

print “&lt;input type=’text’ name=’filename’ size=’20′&gt;<br>”;

print “&lt;input type=’submit’ name=’submit’ value=’submit’&gt;</form>”;

}
 ?>

来源

于 2011-01-21T11:18:38.143 回答