为什么 Laravel-Excel 读取第一行作为列名

Why Laravel-Excel reads first row as column name

我需要读取一个 .xls 文件并将其放入一个数组中。我正在使用 laravel-excel 包来读取 excel 个文件。

我有一个这样的 Excel 文件 :

我需要一个这样的数组:

[
 '9921234567' => 'First Text',
 '9929876544' => 'Second Text',
 '9927654321' => 'Third Text',
 '9928765432' => 'Fourth Text',

]

到目前为止我已经尝试过:

 Excel::load('sample.xls', function($reader) {
     $reader->dd();
 });

问题:

问题是它将第一行读取为列!

0 => RowCollection {#619
      #title: "Sheet1"
      #items: array:3 [
        0 => CellCollection {#623
          #title: null
          #items: array:2 [
            9921234567 => 9929876544.0
            "first_text" => "Second Text"
          ]
        }
        1 => CellCollection {#624
          #title: null
          #items: array:2 [
            9921234567 => 9927654321.0
            "first_text" => "Third Text"
          ]
        }
        2 => CellCollection {#625
          #title: null
          #items: array:2 [
            9921234567 => 9928765432.0
            "first_text" => "Fourth Text"
          ]
        }
      ]
    }

看,我不想将第一行值算作列名!

任何帮助将不胜感激。

您在文档中链接了答案

Table heading as attributes By default the first row of the excel file will be used as attributes.

You can change the default inside the config excel::import.heading. Available options are: true|false|slugged|ascii|numeric|hashed|trans|original

我从未使用过 laravel,只是将其设置为 false 并检查会发生什么。

您需要遍历每一行。之后,您可以在遍历所有列时创建自定义数组

Excel::load('sample.xls', function($reader) {
    $reader->each(function($sheet) {
        // Loop through all rows
        $sheet->each(function($row) {
            // Loop through all columns
        });
    });
})

这只是 excel 导入的基本代码,您需要根据您的示例进行调整。

希望对您有所帮助

documentation 说:

By default the first row of the Excel file will be used as attributes

所以,我推荐使用noHeading函数:

Excel::load('sample.xls', function($reader) {
     $reader->noHeading();
     $reader->dd();
 });