【问题标题】:laravel excel get headers and maatwebsitelaravel excel 获取标题和 maatwebsite
【发布时间】:2023-03-19 01:45:01
【问题描述】:

我只想获取我的 excel 第一列,该列将是列名。

我正在使用此代码

Excel::load($request->file, function ($reader) use($request) {

$torarray=$reader->toArray();
            $line0 = $torarray[0];
            $headers = array_keys($line0);
            $excel_header=$headers;
        });

有时有效,但有时无效。当不使用某些文件时,我在下面写并且可以工作

$torarray=$reader->toArray();
            $line0 = $torarray[0][0];
            $headers = array_keys($line0);
            $excel_header=$headers;
        });

我不明白什么是正确的解决方案。

【问题讨论】:

    标签: excel laravel-5 laravel-5.2 maatwebsite-excel


    【解决方案1】:

    谢谢@mahmoud-zalt

    只是想分享一下我在 Laravel 5.5 中是如何使用它的:

    $reader = Excel::load(storage_path() . '/uploads/tracking-number/' . $fileName)->get();
    $headerRow = $reader->first()->keys()->toArray();
    

    JSON

    ["date","reference_no","tracking_notrace_webhttpwww.17track.com_for_eub_and_httpwww.cacesapostal.com_for_swiss_post","destination_country","receiver","tel","state","city","post_code","address","weightkg","quantity","valueusd","description","parcelquantity",0]
    

    var_export

    array (
      0 => 'date',
      1 => 'reference_no',
      2 => 'tracking_notrace_webhttpwww.17track.com_for_eub_and_httpwww.cacesapostal.com_for_swiss_post',
      3 => 'destination_country',
      4 => 'receiver',
      5 => 'tel',
      6 => 'state',
      7 => 'city',
      8 => 'post_code',
      9 => 'address',
      10 => 'weightkg',
      11 => 'quantity',
      12 => 'valueusd',
      13 => 'description',
      14 => 'parcelquantity',
      15 => 0,
    )
    

    print_r

    Array
    (
        [0] => date
        [1] => reference_no
        [2] => tracking_notrace_webhttpwww.17track.com_for_eub_and_httpwww.cacesapostal.com_for_swiss_post
        [3] => destination_country
        [4] => receiver
        [5] => tel
        [6] => state
        [7] => city
        [8] => post_code
        [9] => address
        [10] => weightkg
        [11] => quantity
        [12] => valueusd
        [13] => description
        [14] => parcelquantity
        [15] => 0
    )
    

    【讨论】:

    【解决方案2】:

    这段代码对我有用:

    $results = Excel::selectSheetsByIndex(0)->load($file)->get();
    echo "<pre>";
    var_dump($results->getHeading());
    echo "</pre>";
    

    【讨论】:

      【解决方案3】:

      试试这个:

      /**
       * @param \SplFileInfo $file
       *
       * @return  Array
       */
      public function run(SplFileInfo $file)
      {
          $excelFile = Excel::load($file);
      
          $excelData = $excelFile->all();
      
          return (($excelData->first())->keys())->toArray();
      }
      

      【讨论】:

      【解决方案4】:

      对于 maatwebsite excel 版本 3,您可以通过以下方法获取标题:

      use Maatwebsite\Excel\HeadingRowImport;
      
      $headings = (new HeadingRowImport)->toArray(file);
      

      插入您的文件路径代替 file 关键字。

      【讨论】:

      • 但是如果我只有 $request->file('file') 中的文件并且没有文件路径?我需要先存储它吗?
      • 嗨@Phil,不,您可以传入$request-&gt;file('filename'),例如$headings = (new HeadingRowImport)-&gt;toArray($request-&gt;file('filename')); 应该可以工作
      【解决方案5】:

      只是想分享一个更优化的方法(这是 v2.1 解决方案):

      Excel::load($file->path(), function (LaravelExcelReader $reader) {
      
          /** @var RowCollection $singleRow */
          $singleRow = $reader->takeRows(1)->get(); // no need to parse whole sheet for the headings
          $headings = $singleRow->getHeading();
      
          // Do validation. Throw exception.
      
          $reader->takeRows(false); // set the limit back to unlimited
      })->get();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-12
        • 2023-01-25
        • 1970-01-01
        • 2021-09-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多