我正在使用 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>";
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行时,我得到了单元格的数据:
无论如何要访问这些字段?像 $row->email 之类的东西?我想获取该值并将其存储在一个变量中以与我在数据库中的值进行比较。
希望你能帮我!
非常感谢!
$row->getCells返回一个数组Cells。您可以通过调用每个单元格来访问它的值$cell->getValue()。
在您的情况下,如果您想要电子邮件字段,则没有魔术映射。如果电子邮件列是第 5 列,那么您可以执行以下操作:
$cells = $row->getCells();
$emailCell = $cells[4]; // 4 because first column is at index 0.
$email = $emailCell->getValue();
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
您只需将行转换为数组即可获取值。假设您想获取名称的值。正如你所看到的,name 的索引是 1。你要做的是:
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
$value = $row->toArray();
$name = $value[1];
}
}
Run Code Online (Sandbox Code Playgroud)
希望它能帮助你。