如何在 php 电子表格解析器库中按列名获取值?

Posted

技术标签:

【中文标题】如何在 php 电子表格解析器库中按列名获取值?【英文标题】:How to get value by column name in php spreadsheet-parser library? 【发布时间】:2017-07-04 02:56:10 【问题描述】:

我正在使用akeneo-labs spreadsheet-parser 库从 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);

其实你可以在循环中通过列索引获取值,是否可以改为通过列名获取值?

【问题讨论】:

试试phpExcel这是蜜蜂的鼻子 phpexcel很慢! 改用PHPExcel的继承者PhpSpreadsheet。 【参考方案1】:

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

【讨论】:

【参考方案2】:

也许您可以使用 PHP 默认函数 fgetcsv() 在电子表格 CSV 文件中执行此操作,您可以从此处进行概述:https://www.php.net/manual/en/function.fgetcsv fgetcsv — 从文件指针获取行并解析 CSV 字段

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

【讨论】:

【参考方案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']);
    

【讨论】:

以上是关于如何在 php 电子表格解析器库中按列名获取值?的主要内容,如果未能解决你的问题,请参考以下文章

研究人员在广泛使用的URL解析器库中发现漏洞

有没有办法在 SQL 中按列名对两个日期列进行分类?

layui数据表格如何根据列名修改整列的值?

使用命令行解析器库获取 TargetInvocationException

如何使用默认的组织模式电子表格自动求和行为?

使用 JNA 在 Clojure 中按值获取和传递结构