8

我正在使用 PhpSpreadsheet 轻松地从 xls 文档中读取并在一些计算后插入数据库。我成功地使用了文档中的示例,但我发现它太复杂了,我确定我错过了一些东西,而且可以更容易地完成。

$worksheet = $this->getWorksheet("file.xls");
foreach ($worksheet->getRowIterator() as $row) {
  $cellIterator = $row->getCellIterator();
  $cellIterator->setIterateOnlyExistingCells(FALSE);
  foreach ($cellIterator as $key => $cell) {
    $cellValue = $cell->getValue();

    if($key == 'A')
      $field1 = $cellValue;
    if($key == 'B') {
      $dateTime = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($cellValue);
      $date = $dateTime->format("Y-m-d");
    }
    if($key == 'C')
      $field2 = $cellValue;
    if($key == 'D')
      $field3 = $cellValue;
    if($key == 'E')
      $field4 = $cellValue;
  }
}

我本来希望有类似$row->getCell("A")->getValue()的东西可用。

所以...我错过了什么吗?

4

2 回答 2

1

请参阅有关按列和行直接获取值而不是测试键的文档

从例子:

// Get the value from cell B5
$cellValue = $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 5)->getValue();

希望有帮助

于 2018-04-03T22:05:55.157 回答
1

这是我发现的

        $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
        $spreadsheet = $reader->load("test.xlsx");
        $sheet = $spreadsheet->getSheet(0);

        $nb = 0;

        foreach ($sheet->getRowIterator() as $row) {

            echo $sheet->getCell("A$nb")->getValue();
            echo "<hr>";
            
            $nb++;
        }
于 2020-12-03T13:27:08.097 回答