【问题标题】:How to get value by column name in php spreadsheet-parser library?如何在 php 电子表格解析器库中按列名获取值?
【发布时间】: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);
}

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

【问题讨论】:

标签: php spreadsheet


【解决方案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']);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多