Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)
Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式)
这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导入导出功能的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
解决问题:在很对真实开发需求下,我们的Excel文件并不是单纯的导出,还需要对其内容进行完善和修饰,这就是我们这篇文章出现的真正原因,希望能帮助到更多的小伙伴,本博客会持续更新,希望有不对的地方小伙伴的多多的指出
1.简介
Laravel Excel 是一款基于PHPExcel开发的Laravel框架专用的Excel/CSV 文件导入导出功能的扩展包,用起来的非常方便。
它的Github地址是:https://github.com/Maatwebsite/Laravel-Excel
当然了,你也可以使用PHPExcel,但是请注意,PHPExcel官方团队已经停止维护了,现在官方团队开发维护的是它的升级版PHPExcel扩展包,叫做:PhpSpreadsheet
2.安装与配置
好,我们先去官网注意一下细节,针对我们不同版本的环境下载我们需要的安装包,个人php7.0,下载2.1版本
1. 首先在Laravel项目根目录下使用Composer安装依赖:
composer require "maatwebsite/excel:~2.1.0"
2.在config/app.php中注册服务提供者到providers数组
Maatwebsite\Excel\ExcelServiceProvider::class,
3.在config/app.php中注册门面到aliases数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
4.之后生成配置文件,生成之后再config文件夹里有一个excel.php
php artisan vendor:publish
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 文件到处功能 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'); } }
好现在我们已经实现了,基本的导出功能,但是:老板说,这不太符合需求,我想要第一排,三个单元格合并的那种,这可急坏我了,也是我去找度娘,还是在前辈们的身影里看到了希望,接下为大家介绍一下:如何设置单元格信息
$cellData = ['90','88','85','263']; Excel::create('财务报表',function($excel) use ($cellData){ $excel->sheet('财务报表', function($sheet) use ($cellData){ $tot = count($cellData) ; //设置单元格宽度、字体大小 $sheet->setWidth(array( 'A' => 12, 'B' => 12, 'C' => 12, 'D' => 12 ))->rows($cellData)->setFontSize(12); // 菜单 样式 $sheet->cells('A1:C1', function($cells) { $cells->setAlignment('center'); $cells->setFontWeight('bold'); }); // 总分 右对齐 $sheet->cells('D', function($cells) { $cells->setAlignment('right'); }); // 总分内容样式 $sheet->cells('D', function($cells) { $cells->setAlignment('left'); $cells->setFontColor('#a09b9b'); $cells->setFontFamily('Calibri'); $cells->setFontWeight('normal'); $cells->setFontSize(12); }); // 高亮显示 $sheet->cells('A3:D3', function($cells) { $cells->setBackground('#87eabd'); $cells->setFontWeight('bold'); $cells->setFontSize(14); }); //合并行 $sheet->mergeCells('A1:D1'); //填充每个单元格的内容 $sheet->cell('A1','张三') $sheet->cell('A2','语文') $sheet->cell('B2','数学') $sheet->cell('C2','外语') $sheet->cell('D2','总分') $sheet->cell('A3',$cellData[0]) $sheet->cell('B3',$cellData[1]) $sheet->cell('C3',$cellData[2]) $sheet->cell('C3',$cellData[3]) }); })->export('xls');
哇,好了,这下又解决了一块心头病,
注意:以上为测试数据,如果想更好的实现,请使用数组传输数据,一个基本的数据导出功能第一种方法比较方便快捷,只有在特殊需求情况下才会使用第二种情况,比如:合并单元格,制定特殊单元格样式,如果如上图,前两排为固定值,只需定义前两排的值,后边用数组便利$shell->cell(),防止太多冗余代码,给项目带来不必要的压力
4.导入文件
导入我们可以直接用第一步注册的门面Excel门面上的load方法
public function import(){ $filePath = 'storage/exports/'.iconv('UTF-8', 'GBK', '用户信息').'.xls'; Excel::load($filePath, function($reader) { $data = $reader->all(); dd($data); }); }
一个简单的操作就完成了,这个插件使用起来挺不错的。上方出现的问题,解决的或者有问题的请留言。
如果对上边提到方法有不足的地方请多多指出,如果对您或者您的身边的小伙伴有帮助请多多推广,谢谢
下边推送一个连接:http://www.bcty365.com/content-153-6235-1.html
这篇文章更好的解释了laravel Excel的每一个属性,但是博客样式烂的一撇(作者看到别打我,嘿嘿),也谢谢这个作者对这篇博客的帮助,
- Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
- Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
- Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解 3ff8
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)
- 在 Laravel 使用扩展包maatwebsite/excel 实现 Excel/CSV 文件导入导出功能
- asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台
- 纯前端利用 js-xlsx 实现 Excel 文件导入导出功能示例
- Laravel中使用Laravel Excel 实现Excel文件导入导出