Заполнение базы данных mysql файлом excel с использованием phpspreadsheet

0

Я пытаюсь заполнить базу данных mysql файлом excel, используя библиотеку phpspreadsheet. Я делаю это следующим образом, но я получаю только первую строку. Как я могу сделать это для всех строк

  $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++;
  }
  • 0
    die() внутри цикла?
  • 0
    пожалуйста в этом проблема? Я просто использовал это, чтобы проверить
Показать ещё 2 комментария
Теги:
phpspreadsheet
phpexcel-1.8.0

1 ответ

0

Вот как я импортирую таблицу XLSX с помощью phpSpreadSheet в базу данных MySQL, используя PDO (измененный в соответствии с вашими критериями).

// 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));
  }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню