使用 Spout 读取 Excel 文件时获取字段数据

Get field data when using Spout to read an Excel file

我正在使用 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 之类的东西吗?我想获取该值并将其存储在一个变量中,以便将其与我在数据库中的值进行比较。

希望你能帮助我!

非常感谢!

$row->getCells returns Cells 的数组。您可以通过调用 $cell->getValue() 来访问每个单元格的值。

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

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

希望对您有所帮助!

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

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

希望对您有所帮助。