【问题标题】:Get field data when using Spout to read an Excel file用户Spout读取Excel文件时获取字段数据
【发布时间】:2019-12-21 20:32:59
【问题描述】:

我正在使用 Spout 读取 Excel 文件。这是我的 Excel 的样子:

我在 Spout 文档中尝试了一些基本代码:

$filePath = '/Users/nhathao/Desktop/employee-test.xlsx';
    $reader = ReaderEntityFactory::createXLSXReader();
    //$reader = ReaderFactory::create(Type::XLSX);
    $reader->open($filePath);

    foreach ($reader->getSheetIterator() as $sheet) {
        foreach ($sheet->getRowIterator() as $row) {
            echo "<pre>";
            print_r($row->getCells());
            echo "</pre>";
        }
    }

当我运行时,我得到了单元格的数据:

无论如何要访问这些字段?像 $row->email 这样的东西?我想获取该值并将其存储在一个变量中以与我在数据库中的值进行比较。

希望你能帮助我!

非常感谢!

【问题讨论】:

    标签: laravel spout


    【解决方案1】:

    您只需将行转换为数组即可获取值。假设您想要获取 name 的值。如您所见,名称的索引为 1。您要做的是:

    foreach ($reader->getSheetIterator() as $sheet) {
        foreach ($sheet->getRowIterator() as $row) {
            $value = $row->toArray();
            $name = $value[1];
        }
    }
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      $row-&gt;getCells 返回Cells 的数组。您可以通过在其上调用$cell-&gt;getValue() 来访问每个单元格的值。

      在您的情况下,如果您想要电子邮件字段,则没有魔术映射。如果电子邮件列是第 5 列,那么您可以这样做:

      $cells = $row->getCells();
      $emailCell = $cells[4]; // 4 because first column is at index 0.
      $email = $emailCell->getValue();
      

      希望有帮助!

      【讨论】:

      • 或者我们可以使用 $cell[4]->value 来缩短。我昨晚发现了这个。无论如何,感谢您的帮助!
      • 另一种简写是:$row-&gt;getCellAtIndex(4)-&gt;getValue()
      猜你喜欢
      • 2015-12-22
      • 2012-10-05
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多