我已将Maatwebsite/Laravel Excel从2.1升级到3.1。有些方法已被弃用。
下面是2.1版的代码。
$data = Excel::load($path, function($reader) {})->get()->toArray();
当我使用2.1的时候,它是工作的,但是在我升级之后,它是错误的
调用未定义的方法Maatsite\Excel\Excel::加载()
对于3.1版本,我尝试更改为
$data = Excel::import($path, function($reader) {})->get()->toArray();
我知道这可能不是正确的语法。
这里我的完整代码时,使用2.1开发。
$path = $request->file('csv_file')->getRealPath();
if ($request->has('header')) {
$data = Excel::import($path, function($reader) {})->get()->toArray();
} else {
$data = array_map('str_getcsv', file($path));
}
if (count($data) > 0) {
if ($request->has('header')) {
$csv_header_fields = [];
foreach ($data[0] as $key => $value) {
$csv_header_fields[] = $key;
}
}
$csv_data = array_slice($data, 0, 8);
$csv_data_file = CsvData::create([
'csv_filename' => $request->file('csv_file')->getClientOriginalName(),
'csv_header' => $request->has('header'),
'csv_data' => json_encode($data)
]);
} else {
return redirect()->back();
}
return view('import.import_field', compact( 'csv_header_fields', 'csv_data', 'csv_data_file'));
如何在3.1版上修复此错误?
不要返回降级,您可以使用最简单的导入方法轻松使用新的更新版本(“maatwebsite/excel”:“~3.1.0”)。
更新Composer.json。。
"require": {
**"maatwebsite/excel": "~3.1.0"**
},
php artisan make:import UsersImport
>
它将在app\imports\UserImport.php中创建导入
<?php
namespace App\Imports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UserImport implements ToCollection,WithHeadingRow
{
public function collection(Collection $rows)
{
return $rows;
}
// headingRow function is use for specific row heading in your xls file
public function headingRow(): int
{
return 3;
}
}
?>
在控制器文件中。。
use Excel;
public function importExcel(Request $request) {
$import = new UsersImport();
$data = \Excel::import($import, request()->file('import_file'));
}
import()
方法的第一个参数不再是3.1中文件的路径,而是必须创建的导入文件的类名。
在此导入文件中,可以定义如何读取图纸,以及要将图纸转换为何种格式,例如模型或集合。
从2.1迁移到3.1的最简单方法是通过运行(在您的情况下)创建这样的导入类:
php artisan make:import CsvDataImport
如果您想一次读取所有至行,如在问题代码中,您可以使用导入文件中的来收集
关注点:
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
class CsvDataImport implements ToCollection
{
public function collection(Collection $rows)
{
// Use the $rows collection to create your CsvData model.
}
}
在Controller中,您可以这样调用导入:
use App\Imports\CsvDataImport;
use Maatwebsite\Excel\Excel;
Excel::import(new CsvDataImport, $path);
您可以在这里阅读更多关于导入到集合的信息
实际上,在Maatwebsite/Laravel Excel版本3中,不需要为Excel导入创建任何额外的类。基本上,您可以使用与版本2中几乎相同的方式完成整个CSV到阵列的转换:
$path = $request->file('csv_file')->getRealPath();
$data = \Excel::toArray('', $path, null, \Maatwebsite\Excel\Excel::TSV)[0];
导入 Stylus支持字面@import CSS, 也支持其他Stylus样式的动态导入。 字面CSS 任何.css扩展的文件名将作为字面量。例如: @import "reset.css" 渲染如下: @import "reset.css" Stylus导入 当使用@import没有.css扩展,会被认为是Stylus片段(如:@import "mixins/border-radius")。 @i
本文向大家介绍python import 上级目录的导入,包括了python import 上级目录的导入的使用技巧和注意事项,需要的朋友参考一下 有时候我们可能需要import另一个路径下的python文件,例如下面这个目录结构,我们想要在_train.py里import在networks目录下的_lstm.py和上级目录下的_config.py。 只需两步操作 (1)在networks文件夹下
5.2. 使用 from module import 导入模块 Python 有两种导入模块的方法。两种都有用,你应该知道什么时候使用哪一种方法。一种方法, import module,你已经在第 2.4 节 “万物皆对象”看过了。另一种方法完成同样的事情,但是它与第一种有着细微但重要的区别。 下面是 from module import 的基本语法: from UserDict import
实际上,我已经使用Node.js和mongoDB完成了一个示例项目,它允许用户保存注释,现在我正在进行导出和导入 点击导出按钮,会下载一个带有用户名和备注字段的excel文件,用户必须在下载的excel文件中写入用户名和备注,现在点击导入按钮,会显示一个对话框,它会显示一个选择文件的按钮。这里我们需要选择和上传excel 上传成功后,数据将存储在mongoDB数据库中。 我已经使用javascri
主要内容:import 模块名 as 别名,from 模块名 import 成员名 as 别名使Python 进行编程时,有些功能没必须自己实现,可以借助 Python 现有的标准库或者其他人提供的第三方库。比如说,在前面章节中,我们使用了一些数学函数,例如余弦函数 cos()、绝对值函数 fabs() 等,它们位于 Python 标准库中的 math(或 cmath)模块中,只需要将此模块导入到当前程序,就可以直接拿来用。 前面章节中,已经看到使用 import 导入模块的语法,但实际上
上一个小节中我们学习到了如何提取样式并进行导入,但是在某些情况下我们可能需要对导入的样式文件有一些需求,比如标识一个文件的类型。我们就需要对导入文件进行配置(拓展)从而让编译机制可以识别我们的需求。 1. 语法定义 Less offers several extensions to the CSS @import CSS at-rule to provide more flexibility ov