【问题标题】:Can I set startRow to different values for different sheets using Maatwebsite's Laravel-Excel?我可以使用 Maatwebsite 的 Laravel-Excel 将 startRow 设置为不同工作表的不同值吗?
【发布时间】:2018-05-31 17:59:26
【问题描述】:

我正在使用Maatwebsite's Laravel-Excel 导入包含两张工作表的 Excel 文件。该文件是由另一个系统生成的;我无法改变它的制作方式。

在第一张纸上,第一行是列标题。这很好用。

...但是第二张纸有两行不需要的文本,然后是 第三 行中的标题。

我可以将config(['excel.import.startRow' => 3]) 设置为从第三行开始导入,但这意味着我错过了第一张表中的前两行有用数据。

    config(['excel.import.startRow' => 3]);
    $sheets = $import->all();

有什么方法可以让第一张工作表的 excel.import.startRow 设置为 1,而将另一张工作表的 excel.import.startRow 设置为 3?

【问题讨论】:

  • 你回显数据了吗?
  • 是的。通常,People 的数据很好,但 Finance 的数据已损坏 - 请参阅 jsfiddle.net/qurysp9r 如果我将 excel.import.startRow 设置为 3,那么 People 现在已损坏,因为我跳过了包括标题行在内的前两行 - 请参阅 jsfiddle.net/s1szqjnj

标签: laravel maatwebsite-excel phpdotenv


【解决方案1】:

所以我想出了一个答案。这不是一个很棒的解决方案,但我想它会做的。

我将只导入整个文档,然后处理“人员”选项卡并忽略“财务”选项卡。

然后我将 excel.import.startRow 设置为 3 并再次导入整个文档,这次我将忽略“人员”选项卡并处理“财务”选项卡。

就像我说的那样,这不是一个优雅的解决方案,所以如果有人想出更好的方法来做到这一点,我很乐意听取您的意见。但现在可以了。

【讨论】:

    【解决方案2】:

    你可以使用:

    use Maatwebsite\Excel\Concerns\WithHeadingRow;
    use Maatwebsite\Excel\Concerns\WithStartRow;
    

    在课堂上:

    class nameClass implements ToModel, WithHeadingRow, WithStartRow
    

    添加功能:

     public function headingRow(): int
    {
        return 3;
    }
    
    /**
     * @return int
     */
    public function startRow(): int
    {
        return 4;
    }
    

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-05
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2020-03-07
      相关资源
      最近更新 更多