使用phpspreadsheet用excel文件填充mysql数据库
我正在尝试使用PHPSReadSheet库用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
$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));
}
}