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方法实现导出功能:

<?phpnamespace 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 Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)相关推荐

  1. php laravel导入excel,Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解

    @H_404_0@ 1.简介 @H_404_0@本文主要给大家介绍了关于Laravel 5用Laravel Excel实现Excel/CSV文件导入导出的相关内容,下面话不多说了,来一起看看详细的介绍 ...

  2. laravel5 Excel Excel/CSV 文件导入导出功能

    在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能 Posted on 2015年11月17日 by  学院君   注意版本2.1 1.简介 Lar ...

  3. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  4. csv文件导入导出到mysql

    为什么80%的码农都做不了架构师?>>>    1. 从mysql中导出csv文件 echo "select * from table into outfile '/tmp ...

  5. mysql enclosed by_MySql csv文件导入导出

    一.导出到csv(本地导出) 通过mysql客户端shell连接到服务器,选择使用的数据库,输入sql代码: select * from test_info into outfile '/tmp/te ...

  6. 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

    一.安装配置 使用Composer安装依赖: composer require maatwebsite/excel 发布配置(可选): php artisan vendor:publish --pro ...

  7. excel对csv文件导入导出

    导入csv文件 Private Sub Inport_Renkei_CSV_Click_Click()Dim rowIndex As Integer, item As IntegerDim fileN ...

  8. java实现excel的导入导出(poi详解)

    经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个阿帕奇公司的一个项目,后来被扩充了.是比较好用的excel导出工具. 下面来认识一下这个它吧. 我们知道要 ...

  9. SQLServer 导入导出工具BCP详解

    bcp是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据.bcp可以将数据库的表或视图直接导出,也能通过SELECT ...

最新文章

  1. Android 浏览器的研究(四)--- Apk的启动和主页的加载过程
  2. 【赠书】重磅好书联邦学习实战来袭!你值得拥有一本
  3. 如何批量删除会计科目、供应商、客户的主数据
  4. Vulhub 靶场下载使用
  5. 2011-09-07 00:16 ubuntu 如何修改当前用户名
  6. 初一模拟赛总结(3.30)
  7. EAP 7 Alpha和Java EE 7入门
  8. linux下挂载iso镜像的方法
  9. 开发指南专题四:JEECG微云快速开发平台--JEECG开发环境搭建
  10. 读取文件中的文本并返回字符串
  11. 列表标签(HTML)
  12. 11.20 HTML及CSS
  13. CentOS6.5恢复误删除的文件
  14. 浅谈自来水综合管理信息系统的建设
  15. 每周分享第 18 期
  16. Matlab中数组索引
  17. python之while循环、无限循环
  18. TEST语言编译器--语法分析
  19. PostgreSQL 中的系统字段:tableoid、xmin、xmax、cmin、cmax、ctid
  20. 计算机模拟人脑,人造突触问世,计算机模拟人脑不是梦

热门文章

  1. 讲真,你绝对是第一次看到如此全面的贴片电阻知识
  2. 全职爸爸,是程序员的加试题
  3. 一篇带你走进Vue+阿里云的uni-app开发(HBuilder X开发版)
  4. 新春伊始:从CHAT-GPT到生成式AI,人工智能新范式
  5. PHP获取本周的起止时间
  6. 计算机控制室防火危险级为,8.2 空气调节 - 【已作废】火力发电厂与变电站设计防火规范 GB50229-2006 - 消防规范大全 - 消防资源网!...
  7. 137、易燃固体的火灾危险性
  8. 14. python-es-8.3.3-多词项聚合multi_terms
  9. mapbox-gl加载3dtiles渐变模型(视频)
  10. 数学复习全程规划及方法指导(武忠祥笔记)