【问题标题】:laravel excel read file without import to databaselaravel excel读取文件而不导入数据库
【发布时间】:2021-03-26 23:55:29
【问题描述】:

我正在使用这个库来管理 laravel 项目中的 excel 文件 (https://docs.laravel-excel.com/3.1/getting-started/)

一旦我从本地上传并以 JSON 格式返回,我想只读 excel 文件。

我在控制器中的代码是

$excel = $request->file('excel');
$array = Excel::import(new ProductsImport, $excel);

ProductsImport 文件在哪里

<?php

namespace App\Imports;

use App\Models\Product;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToModel;

class ProductsImport implements ToModel
{

    use Importable;

    /**
     * @param array $row
     *
     * @return Products|null
     */
    public function model(array $row)
    {

        //return $row;

        return new Product([
            'name' => $row[0],
            'email' => $row[1]
        ]);

    }
}

【问题讨论】:

  • new Product... 替换为return json_encode($row)
  • 我无法理解您的问题。你能解释一下吗?
  • 我遇到了同样的问题,...有人可以帮助我们吗??
  • @Regolith 它的工作

标签: php laravel


【解决方案1】:

你可以试试这个解决方案:

$theArray = Excel::toArray([], 'myexcelfile.xlsx');

$theArray 包含“myexcelfile.xlsx”文件的内容。 为了跳过将 excel 文件的内容添加到数据库中,您可以使用 [] 而不是 ProductsImport 对象。

【讨论】:

  • 尝试在您的代码中添加一些解释。它能做什么 ?它是如何解决问题的?
  • 这是有效的解决方案,应标记为答案。效果很好。
【解决方案2】:

感谢 Hadi 为我们指明了正确的方向。 以下是一些基于使用常规文件输入导入 csv 文件的工作示例。就我而言,一旦上传,文件就可以通过请求对象作为“csv_file”访问。

public function importCSV(Request $request)
{
    // Get the csv rows as an array
    $theArray = Excel::toArray(new stdClass(), $request->file('csv_file'));

    // Get the csv rows as a collection
    $theCollection = Excel::toCollection(collect([]), $request->file('csv_file'));

    //etc
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 2020-02-24
    相关资源
    最近更新 更多