【问题标题】:PHP import Excel into database (xls & xlsx)PHP 将 Excel 导入数据库(xls 和 xlsx)
【发布时间】:2012-07-11 23:19:50
【问题描述】:

我试图搜索一些插件来将Excel文件导入MySQL数据库,其中之一是http://code.google.com/p/php-excel-reader/

该工具功能强大,可以将整个 excel 内容显示为 html。

不过,我想我只需要读取Excel文件并提取内容,例如,放入一个数组中,然后编写一个SQL语句进入数据库。

会有好的代码和包吗?谢谢!

【问题讨论】:

标签: php excel import


【解决方案1】:

这是具有适当文档和示例的最佳插件

https://github.com/PHPOffice/PHPExcel

加分项:您可以在其discussion forum寻求帮助,您将在一天内收到作者本人的回复,真是令人印象深刻。

【讨论】:

  • 谢谢...虽然我不能保证在一天之内得到回复,但我尽量答应
  • @MarkBaker,但大多数问题已经在您的论坛中解决了 :)
  • PHPExcel 上一个版本,1.8.1,于 2015 年发布。该项目不再维护,不应再使用。所有用户都应该迁移到其直接继承者 PhpSpreadsheet 或其他替代方案。几个月后,GitHub 项目将被标记为已归档,因此所有内容都将是只读的。
  • PHPOffice/PHPExcel 现已弃用。直接链接到其继任者 PHPOffice/PhpSpreadsheet:github.com/PHPOffice/PhpSpreadsheet
【解决方案2】:

有时我需要将大型 xlsx 文件导入数据库,因此我使用 spreadsheet-reader,因为它可以逐行读取文件。这是一种非常节省内存的导入方式。

<?php
    // If you need to parse XLS files, include php-excel-reader
    require('php-excel-reader/excel_reader2.php');

    require('SpreadsheetReader.php');

    $Reader = new SpreadsheetReader('example.xlsx');
    // insert every row just after reading it
    foreach ($Reader as $row)
    {
        $db->insert($row);
    }
?>

https://github.com/nuovo/spreadsheet-reader

【讨论】:

    【解决方案3】:

    如果您可以在处理之前将 .xls 转换为 .csv,则可以使用以下查询将 csv 导入数据库:

    load data local infile 'FILE.CSV' into table TABLENAME fields terminated by ',' enclosed by '"' lines terminated by '\n' (FIELD1,FIELD2,FIELD3)
    

    【讨论】:

    • 到目前为止,这是我尝试过处理大文件的最好、最快的方法。问题是我收到带有多张表格(相同格式)的 xls 文件,每张表格都有数千条记录,所以我仍然被困在这里如何将所有内容组合在一张 csv 表格中..
    【解决方案4】:

    如果您将excel文件保存为CSV文件,那么您可以使用PHPMyAdmin等工具将其导入mysql数据库

    我不确定这是否对您的情况有所帮助,但是手动或以编程方式将 csv 文件解析到数据库中要比我想象的 excel 文件容易得多。

    编辑:但是,我建议查看其他答案而不是我的答案,因为@diEcho 的答案似乎更合适。

    【讨论】:

      【解决方案5】:

      我写了一个继承类:

      <?php
      class ExcelReader extends Spreadsheet_Excel_Reader {	
      	
       function GetInArray($sheet=0) {
      
        $result = array();
      
         for($row=1; $row<=$this->rowcount($sheet); $row++) {
          for($col=1;$col<=$this->colcount($sheet);$col++) {
           if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {
            $val = $this->val($row,$col,$sheet);
            $result[$row][$col] = $val;
           }
          }
         }
        return $result;
       }
      
      }
      ?>

      所以我可以这样做:

      <?php
      
       $data = new ExcelReader("any_excel_file.xls");
       print_r($data->GetInArray());
      
      ?>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 2022-07-03
        相关资源
        最近更新 更多