如何在 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_column
https://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 电子表格解析器库中按列名获取值?的主要内容,如果未能解决你的问题,请参考以下文章