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

使用phpspreadsheet用excel文件填充mysql数据库,php,mysql,phpspreadsheet,phpexcel-1.8.0,Php,Mysql,Phpspreadsheet,Phpexcel 1.8.0,我正在尝试使用PHPSReadSheet库用excel文件填充mysql数据库。我用下面的方法做,但我只得到第一排。我怎么能为所有的行做呢 $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($target_file); $worksheet = $spreadsheet->getActiveSheet(); $rows = []; $outer = 1; foreach ($worksheet->ge

我正在尝试使用PHPSReadSheet库用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++;
  }

这就是我如何使用PDO(根据您的标准进行修改)将带有phpSpreadSheet的XLSX电子表格导入MySQL数据库的方法


die()
在循环内?请问这是问题所在吗?我只是用它来测试,当我删除die()时,程序继续用第一行填充数据库并崩溃,这可能是因为
while($outer>1)
永远不会结束。您必须在循环内更改
$outer
// 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));
  }
}