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

时间:2017-03-21 08:35:13

标签: php laravel phpexcel laravel-excel

我需要读取.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"
          ]
        }
      ]
    }

看,我不希望第一行值计为列名!

任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:6)

您在文档中链接了答案

  

表标题作为属性   默认情况下,excel文件的第一行将用作属性。

     

您可以更改config excel :: import.heading中的默认值。可用选项包括:true | false | slugged | ascii | numeric | hashed | trans | original

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

答案 1 :(得分:0)

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

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

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

希望有所帮助

答案 2 :(得分:0)

documentation说:

  

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

因此,我建议使用Excel::load('sample.xls', function($reader) { $reader->noHeading(); $reader->dd(); }); 函数:

  function initMenu()
  {
    if($('.hamburger').length && $('.menu').length)
    {
      var hamb = $('.hamburger');

      hamb.on('click', function()
      {
        if(!menuActive)
        {
          openMenu();
        }
        else
        {
          closeMenu();
        }
      });
    }
  }

  function openMenu()
  {
    menu.addClass('active');
    menuActive = true;
  }

  function closeMenu()
  {
    menu.removeClass('active');
    menuActive = false;
  }