【问题标题】:Import Data from Excel in PHP [closed]在 PHP 中从 Excel 导入数据 [关闭]
【发布时间】:2011-01-05 05:38:29
【问题描述】:

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

【问题讨论】:

    标签: php mysql import-from-excel


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    很有可能。您可以将 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);
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:
          <?
           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>”;
          
          }
           ?>
          

          Source

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-07-12
            • 2017-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-25
            • 2012-02-25
            相关资源
            最近更新 更多