使用 phpspreadsheet 使用 excel 文件填充 mysql 数据库

Posted

技术标签:

【中文标题】使用 phpspreadsheet 使用 excel 文件填充 mysql 数据库【英文标题】:Populating a mysql database with an excel file using phpspreadsheet 【发布时间】:2018-12-03 08:27:18 【问题描述】:

我正在尝试使用 phpspreadsheet 库使用 excel 文件填充 mysql 数据库。我正在按照以下方式进行操作,但我只得到第一行。我怎样才能为所有行做到这一点

  $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($target_file);
  $worksheet = $spreadsheet->getActiveSheet();
  $rows = [];
  $outer = 1;
  foreach ($worksheet->getRowIterator() AS $row) 
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(FALSE); // This loops through all cells,
        $cells = [];
        foreach ($cellIterator as $cell) 
            $cells[] = $cell->getValue();
        
        $rows[] = $cells;

        while($outer > 1)
          $data = [
            'testTaker' => $cells[1],
            'correctAnswers' => $cells[2],
            'incorrectAnswers' => $cells[3],
          ];


          if($this->testModel->addTest($data))
              die('it worked');
           else 
              die('Something went wrong');
          

        
        $outer++;
  

【问题讨论】:

die() 在循环内? 请问是这个问题吗?我只是用它来测试 当我删除 die() 时,程序继续用第一行填充数据库并崩溃 嗯,这可能是因为while ($outer > 1) 永远不会结束。您必须在循环内更改 $outer 【参考方案1】:

这就是我使用 PDO 将带有 phpSpreadSheet 的 XLSX 电子表格导入 MySQL 数据库的方式(已修改以符合您的标准)。

// read excel spreadsheet
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
if($reader) 
  $reader->setReadDataOnly(true);
  $spreadsheet = $reader->load($target_file);  
  $sheetData = $spreadsheet->getActiveSheet()->toArray();

  foreach($sheetData as $row) 
    // get columns
    $testTaker = isset($row[0]) ? $row[0] : "";
    $correctAnswers = isset($row[1]) ? $row[1] : "";
    $incorrectAnswers = isset($row[2]) ? $row[2] : "";

    // insert item
    $query = "INSERT INTO item(testTaker, correctAnswers, incorrectAnswers) ";
    $query .= "values(?, ?, ?)";
    $prep = $dbh->prepare($query);
    $prep->execute(array($testTaker, $correctAnswers, $incorrectAnswers));
  

【讨论】:

以上是关于使用 phpspreadsheet 使用 excel 文件填充 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

PhpSpreadsheet的简单使用

使用 PhpSpreadsheet 在 PHP 中读取 XLS

phpspreadsheet 中文文档 结构

如何使用 PhpSpreadsheet 从表格单元格中检索日期?

phpspreadsheet初次使用指引

phpspreadsheet初次使用指引