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

问题描述 投票:0回答:3

我需要阅读的文件.xls,并把它变成一个数组。我使用laravel-excel包读取Excel文件。

我有这样一个Excel文件:

enter image description here

我需要有一个这样的数组:

[
 '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"
          ]
        }
      ]
    }

你看,我不想第一行值计算为列名!

任何帮助将是巨大的赞赏。

php laravel phpexcel laravel-excel
3个回答
6
投票

您在文档链接答案

表头为属性默认情况下,Excel文件的第一行会被用作属性。

您可以更改配置中的默认练成:: import.heading。可用的选项有:真|虚假|猛击| ASCII |数字|散列|反|原创

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


0
投票

您需要环通的每一行。之后,你可以创建自定义的数组,当你环通的所有列

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

这是Excel导入只是基本的代码,你需要把它调整到你的榜样。

希望能帮助到你


0
投票

documentation说:

默认情况下,Excel文件的第一行会被用作属性

所以,我建议使用noHeading功能:

Excel::load('sample.xls', function($reader) {
     $reader->noHeading();
     $reader->dd();
 });
© www.soinside.com 2019 - 2024. All rights reserved.