3

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

希望你能帮我!

非常感谢!

4

2 回答 2

8

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

就您而言,如果您想要电子邮件字段,则没有魔术映射。如果电子邮件列是第 5 列,那么您可以执行以下操作:

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

希望有帮助!

于 2019-08-16T07:26:44.383 回答
4

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

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

希望它会帮助你。

于 2019-09-18T10:54:44.617 回答