underwear/laravel-excel-import

此包的最新版本(v1.1)没有可用的许可信息。

Laravel的简单Excel导入

v1.1 2020-05-13 10:02 UTC

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')