underwear / laravel-excel-import
此包的最新版本(v1.1)没有可用的许可信息。
Laravel的简单Excel导入
v1.1
2020-05-13 10:02 UTC
Requires
- phpoffice/phpspreadsheet: ^1.10
This package is auto-updated.
Last update: 2024-09-13 20:49:58 UTC
README
只需几行代码即可轻松将xlsx文件导入您的数据库!使用默认的Laravel验证器验证您的数据,并从其他表中搜索相关值。
use Underwear\Import\Import; use Underwear\Import\Elements\Text; $dbTable = 'categories'; $xlsxFilepath = '/some/path/to/file.xlsx'; Import::make($dbTable, [ Text::make('title', 'A'), Text::make('code', 'B') ->rules(['filled', 'size:12']) ->prepare(function ($value) { return ucfirst($value); }), ])->parseFile($xlsxFilepath);
支持的列类型
文本
use Underwear\Import\Elements\Text; Text::make('targetTableColumnName', 'A');
您可以添加验证规则
use Underwear\Import\Elements\Text; Text::make('target_table_colum_name', 'A') ->rules(['filled', 'email']);
或者甚至添加您自己的闭包来更改值
use Underwear\Import\Elements\Text; Text::make('target_table_colum_name', 'A') ->prepare(function($value) { return ucfirst($value); });
别名
您可以从文本生成别名
use Underwear\Import\Elements\Slug; Slug::make('slug', 'B');
布尔值
use Underwear\Import\Elements\Boolean; Boolean::make('is_published', 'D') ->trueValue('yeap');
自动增量
不要使用xls单元格获取值。由它自己生成。
use Underwear\Import\Elements\Autoincrement; Autoincrement::make('order_column');
属于
use Underwear\Import\Elements\BelongsTo; BelongsTo::make('category_id', 'C', 'categories' , 'title', 'id'); // 3th arg: related table in database; // 4th arg: column for searching in related table; // 5th arg: column for value returning from related table;
闭包
不要使用xls单元格获取值。直接返回值
use Underwear\Import\Elements\Closure; Closure::make('some_table_field', function() { // code here whatever you want return "something"; });
Faker
用户还可以使用 fzaninotto/Faker
use Underwear\Import\Elements\Faker; use Faker\Generator; Faker::make('some_table_field', function(Generator $faker) { return $faker->word; });
安装
您可以通过composer安装此包
composer require underwear/laravel-excel-import
用法示例
假设我们需要从xlsx文件导入一些文章。
Xlsx文件包含一些字段,如
- "title"(A列)
- "body"(B列)
- "category name"(C列)
- "is_published"(D列),如果为true,则值为"yeap"。
数据库表具有以下列
- (int) id
- (string) title
- (string) slug
- (int fk) category_id
- (bool) is_published
- (int) order_column
use Underwear\Import\Import; use Underwear\Import\Elements\Text; use Underwear\Import\Elements\BelongsTo; use Underwear\Import\Elements\Boolean; use Underwear\Import\Elements\Autoincrement; Import::make('articles', [ Text::make('title', 'A') ->rules(['filled']), Slug::make('slug', 'A'), BelongsTo::make('category_id', 'C', 'categories' , 'title', 'id'), Boolean::make('is_published', 'D') ->trueValue('yeap'), Autoincrement::make('order_column'), ])->parseFile('/path/to/articles.xlsx')