開啟Terminal,輸入以下指令
composer require maatwebsite/excel
可透過以下指令來生成此類別,生成的類別位在app/Imports資料夾內
php artisan make:import UsersImport --model=User
.
├── app
│ ├── Imports
│ │ ├── UsersImport.php
│
└── composer.json
或者你可以自己撰寫,格式如下:
<?php
namespace App\Imports;
use App\User;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
class UsersImport implements ToModel
{
/**
* @param array $row
*
* @return User|null
*/
public function model(array $row)
{
//可設定如果沒有某欄位,該行就不要匯入
if(!isset($row[0])){
return null;
}
return new User([
//設定欄位對應,第一欄對應name欄位,第二欄對應email欄位
'name' => $row[0],
'email' => $row[1],
'password' => Hash::make($row[2]),
]);
}
}
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;
class UsersController extends Controller
{
public function import()
{
Excel::import(new UsersImport, 'users.xlsx');
return redirect('/')->with('success', 'All good!');
}
}
Step 1.在Import類別導入類別並實作
<?php
namespace App\Imports;
...
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
...
class UserImport implements ToModel,WithMultipleSheets
Step 2.在Import類別加入以下函式
下列程式表示只匯入第一個sheet
public function sheets(): array
{
return [
0 => $this,
];
}
Step 1.在Import類別導入類別並實作
<?php
namespace App\Imports;
...
use Maatwebsite\Excel\Concerns\WithStartRow;
...
class UserImport implements ToModel,WithStartRow
Step 2.在Import類別加入以下程式碼
public function startRow(): int
{
return 4; //從第4行開始讀
}
Step 1.在Import類別導入類別並實作
<?php
namespace App\Imports;
...
use Maatwebsite\Excel\Concerns\WithValidation;
...
class UserImport implements ToModel,WithValidation
Step 2.在Import類別加入以下程式碼
//匯入時的驗證規則
public function rules(): array
{
return [
'0' => 'required|string',
'1' => 'required|email',
];
}
//驗證訊息使用的欄位名稱
public function customValidationAttributes()
{
return [
'0' => '姓名',
'1' => 'Email',
];
}
你能夠利用以下指令建立一個位於 app/Exports 資料夾內的輸出類別
php artisan make:export UsersExport --model=User
輸出內容如下:
<?php
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
public function collection()
{
return User::all();
}
}
在控制器裡頭建立一個輸出方法
<?php
namespace App\Http\Controllers;
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
Route::get('users/export/', 'UsersController@export');
...
use Maatwebsite\Excel\Concerns\WithHeadings;
class ServiceExport implements FromCollection, WithHeadings
{
...
}
陣列內的字串將依序作為Excel的標頭
public function headings(): array
{
return [
'Code',
'Description',
'Pos',
'Mod A',
'Mod B',
'Charge',
];
}
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing