如何在php spreadsheet-parser库中按列名获取值?

How to get value by column name in php spreadsheet-parser library?

提问人:Zeta 提问时间:2/15/2017 最后编辑:Prashant PokhriyalZeta 更新时间:9/28/2021 访问量:2402

问:

我正在使用 akeneo-labs 电子表格解析器库从 xlsx 文件中提取数据。

use Akeneo\Component\SpreadsheetParser\SpreadsheetParser;

$workbook = SpreadsheetParser::open('myfile.xlsx');

$myWorksheetIndex = $workbook->getWorksheetIndex('myworksheet');

foreach ($workbook->createRowIterator($myWorksheetIndex) as $rowIndex => $values) {
    var_dump($rowIndex, $values);
}

实际上,您可以在循环中通过列索引获取值,是否可以按列名获取值?

PHP 电子表格

评论

0赞 RiggsFolly 2/15/2017
试phpExcel,这是蜜蜂的neez
0赞 Zeta 2/15/2017
phpexcel 很慢!
2赞 fabrik 9/13/2018
请改用 PHPExcel 的后继者 PhpSpreadsheet
0赞 noxter 2/8/2022
phpExcel 自 2017 年起被弃用,自 2019 年起永久存档。避免使用它

答:

0赞 Moaaz 6/12/2019 #1

也许按照建议使用另一个包可以解决您的问题。 您也可以使用 https://www.php.net/manual/en/function.array-column.phparray_column

0赞 Ahm Harunur Rashid 6/22/2021 #2

也许你可以通过使用 PHP 默认函数 fgetcsv() 在电子表格 CSV 文件中做到这一点,你可以从这里抛出一个概述: https://www.php.net/manual/en/function.fgetcsv fgetcsv — 从文件指针获取行并解析 CSV 字段

首先,以 CSV 类型另存为 Xls 文件,然后您可以按列名从该 CSV 文件中获取值。

0赞 Plantour 9/28/2021 #3

你可以试试这个。

use Akeneo\Component\SpreadsheetParser\SpreadsheetParser;

$workbook = SpreadsheetParser::open('myfile.xlsx');

$myWorksheetIndex = $workbook->getWorksheetIndex('myworksheet');
// all columns
$columns = [];

foreach ($workbook->createRowIterator($myWorksheetIndex) as $rowIndex => $values) {
    if ($rowIndex == 1) {
        $columns = $values;
    } else {
        $datum = array_combine($columns, $values);
        // get value by column name
        var_dump($datum['name']);
    }
}