laravel Excel导入导出

1、简介

Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的、富有表现力的代码实现 Excel/CSV 文件的导入和导出。

该项目的 GitHub 地址是:https://github.com/Maatwebsite/Laravel-Excel。

官网地址是:https://laravel-excel.com/

本文我们将在 Laravel 中使用 Laravel Excel 简单实现 Excel 文件的导入和导出。

2、安装&配置

使用 Composer 安装依赖

首先在 Laravel 项目根目录下使用 Composer 安装依赖:

复制代码
composer require maatwebsite/excel

安装后的设置
config/app.php 中注册服务提供者到 providers 数组:

复制代码
Maatwebsite\Excel\ExcelServiceProvider::class,

同样在 config/app.php 中注册门面到 aliases 数组:

复制代码
'Excel' => Maatwebsite\Excel\Facades\Excel::class,

如果想要对 Laravel Excel 进行更多的自定义配置,执行如下 Artisan 命令:

复制代码
php artisan vendor:publish

执行成功后会在 config 目录下生成一个配置文件 excel.php

3、导出Excel文件

为了演示 Laravel Excel 相关功能,我们为本测试创建一个干净的控制器 ExcelController.php

复制代码
php artisan make:controller ExcelController --plain

然后在 routes.php 中定义相关路由:

复制代码
Route::get('excel/export','ExcelController@export');
Route::get('excel/import','ExcelController@import');

接下来我们先在 ExcelController.php 中定义 export 方法实现导出功能:

复制代码
<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
 
use Excel;
 
class ExcelController extends Controller
{
    //Excel文件导出功能 By Laravel学院
    public function export(){
        $cellData = [
            ['学号','姓名','成绩'],
            ['10001','AAAAA','99'],
            ['10002','BBBBB','92'],
            ['10003','CCCCC','95'],
            ['10004','DDDDD','89'],
            ['10005','EEEEE','96'],
        ];
        Excel::create('学生成绩',function($excel) use ($cellData){
            $excel->sheet('score', function($sheet) use ($cellData){
                $sheet->rows($cellData);
            });
        })->export('xls');
    }
}

我们在浏览器中访问 http://laravel.app:8000/excel/export 会导出一个名为 学生成绩.xls 的Excel文件:

如果你要导出 csv 或者 xlsx 文件,只需将 export 方法中的参数改成 csv 或 xlsx 即可。

如果还要将该 Excel 文件保存到服务器上,可以使用 store 方法:

复制代码
Excel::create('学生成绩',function($excel) use ($cellData){
     $excel->sheet('score', function($sheet) use ($cellData){
         $sheet->rows($cellData);
     });
})->store('xls')->export('xls');

文件默认保存到 storage/exports 目录下,如果出现文件名中文乱码,将上述代码文件名做如下修改即可:

复制代码
iconv('UTF-8', 'GBK', '学生成绩')

4、导入Excel文件

我们将刚才保存到服务器上的 Excel 文件导入进来,导入很简单,使用 Excel 门面上的 load 方法即可:

复制代码
//Excel文件导入功能 By Laravel学院
public function import(){
    $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '学生成绩').'.xls';
    Excel::load($filePath, function($reader) {
        $data = $reader->all();
        dd($data);
    });
}

load 方法基于项目根路径作为根目录,同样我们对中文进行了转码,否则会提示文件不存在。

在浏览器中访问 http://laravel.app:8000/excel/import 页面显示如下:

posted @   牛奔  阅读(13347)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示