PHP的laravel框架后台实现数据导出excel的功能
要想在PHP后台实现excel导入导出功能,一种简单有效的方法就是使用phpexcel插件。
要使用phpexcel插件,首先需要下载composer,这个工具是专门用来管理项目中库之间的依赖关系的。使用composer下载的phpexcel组件中的类,在项目中的其他文件中都是可以访问phpexcel的而无需其他use和namespace之类的语句。
$objExcel = new \PHPExcel();注意在调用这个类,新建的时候要加上\,系统会自动定位到phpexcel.php这个文件中去拿到这个类。
在下载composer.phar这个文件的时候,最好翻墙,不翻墙下载十次失败十次,翻墙后1秒1M,一秒下好。
composer下载地址:https://getcomposer.org/download/
强烈推荐翻墙后再下载。如果没有能力翻墙可以联系我,看到后邮箱发给你。
下载好composer.phar后,我们对它进行全局配置。我用的是win8系统,所以这里只讲Windows系统下的全局配置。我使用的是xampp工具包,wamp也一样。将composer.phar放入与php.exe相同的文件夹里。我的是C:\xampp\php。同时在这个文件夹下新建一个名为composer的文本文档,里面写进:@php "%~dp0composer.phar" %*
之后将这个文本文件的扩展名txt改为bat。

添加完成上述步骤后,再将该路径添加到系统的环境变量中。win8操作方法如下:我的电脑->右击->属性->高级系统设置->环境变量->双击path->在变量值中添加;C:\xampp\php
这是我的composer所在的路径,你注意添加的路径是你自己的路径,而不是这里的示例。


进行到这里,composer全局配置便完成了。为了验证我们真的完成了composer的全局配置,可在命令行里的任意路径下输入composer,若命令行里打印出了composer大字,便说明我们全局配置成功了。

之后,我们需要composer从中国镜像网下载资源,而不是原本的外网。我也试图使用composer从外网下载所需的资源,结果不管翻不翻墙都下载失败,所以对composer进行配置使它从国内镜像网下载资源是很有必要的一件事情。
方法可参考这里:https://pkg.phpcomposer.com/
我简单讲解一下使用国内镜像配置。在命令行使用cd C:\xampp\htdocs\laravelDemo 你注意这里改成你自己的项目根目录。
然后在命令行的根目录下输入
composer config repo.packagist composer https://packagist.phpcomposer.com
回车后,配置便完成了。此时打开项目跟目录下的composer.json文件会发现里面增加了这部分内容:

当然你也可以手动在这个文件中添加这些内容。
到此我们便完成了composer的配置可以使用它来下载phpexcel组件了。可以参考这里的内容:http://www.tuicool.com/articles/ziY7Vv
使用Composer安装依赖
首先在Laravel项目根目录下使用Composer安装依赖:在命令行项目的根目录下操作
composer require maatwebsite/excel ~2.0.0
安装后在项目中的设置:
在 config/app.php 中注册服务提供者到 providers 数组:
Maatwebsite\Excel\ExcelServiceProvider::class,
同样在 config/app.php 中注册门面到 aliases 数组:
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
至此便可以在项目中使用phpexcel组件了。
附上使用例程。
导出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', '学生成绩')
导入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 ,页面显示如下:

当然,Laravel Excel还有很多其它功能,比如将Blade视图导出为Excel或CSV,以及对导入/导出更加细粒度的控制,具体可参考其官方文档: http://www.maatwebsite.nl/laravel-excel/docs
例程中的路由控制器注意要用自己的url路径。
PHP的laravel框架后台实现数据导出excel的功能的更多相关文章
- 使用SSM框架实现Sql数据导出成Excel表
SSM框架实现SQL数据导出Excel 思路 首先在前端页面中添加一个导出功能的button,然后与后端controller进行交互. 接着在相应的controller中编写导出功能方法. 方法体: ...
- 【asp.net】将GridView数据导出Excel
概要: 中午睡了一会,醒来的时候看到老师叫我去办公室,需求是这样的,把excel表中的每个同学,判断图片目录中是否有对应的照片(图片的名字用的学号或身份证号码) 没有对应图片的学生记录,存入自己的数据 ...
- MVC 实现表格数据导出Excel(NPOI方式)
前端View(@ViewBag为查询条件): <span id="exprobtn" class="btn_blue" style="dispa ...
- 百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里?
好多人在问:如何将百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里? 现在,很多人都在网络上找商家,联系业务. 百度地图里有很多的商家联系 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- JavaScript 上万条数据 导出Excel文件(改装版)
最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var ...
- JavaScript 上万条数据 导出Excel文件 页面卡死
最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var ...
- 将页面中表格数据导出excel格式的文件(vue)
近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安 ...
- 基于C#语言MVC框架NPOI控件导出Excel表数据
控件bin文件下载地址:https://download.csdn.net/download/u012949335/10610726@{ ViewBag.Title = "dcxx" ...
随机推荐
- 关于Edittext默认弹出软键盘为数字键
如果说我们只是输入数字的话,我们可以直接在xml文件中: android:inputType="number" 如果是身份证类型的话,我们可以这样: android:inputTy ...
- mysql数据库的中文乱码问题的解决
今天终于解决了数据库中文乱码的问题,分享出来让更多的人作为参考,我们进入主题: 如果在搭建mysql数据库的时候没有设置它的编码格式,在以后的开发中,中文乱码会是一个令人头疼的问题,所以我在这里分享一 ...
- 咖啡师之路:第一日一杯Espresso
代码敲累了.产品要发布了.熬夜啊加班啊. 精神完全不在状态. 咋办--- 咋办--- 咋办---! 来一杯Espresso浓缩咖啡.各位码农,码神们的必备良品! 咖啡每天要2-3杯,不管是速溶还是现磨 ...
- 简单聊聊TestNG中的并发
前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...
- 牛顿迭代法(Newton's Method)
牛顿迭代法(Newton's Method) 简介 牛顿迭代法(简称牛顿法)由英国著名的数学家牛顿爵士最早提出.但是,这一方法在牛顿生前并未公开发表. 牛顿法的作用是使用迭代的方法来求解函数方程的根. ...
- DAX/PowerBI系列 - 参数表(Parameter Table)
DAX/PowerBI系列 - 参数表(Parameter Table) 难度: ★☆☆☆☆(1星) 适用范围: ★★★★☆(4星) 概况: 这个模式比较简单灵活,而且很实用.所用的DAX语句也比较简 ...
- java中的递归
所谓递归,是指程序调用自身,当然,递归不会无休止地调用下去,它必然有一个出口,当满足条件时程序也就结束了,不然的话,那就是死循环了. 看下面这个类,有几个递归方法,看了之后肯定会对你学习递归很有帮助的 ...
- Floating IP in OpenStack Neutron
前言 Floating IP 是相对于Fixed IP而言的,它一般是在VM创建后分配给VM的,可以达到的目的就是,外界可以访问通过这个Floating Ip访问这个VM,VM也可以通过这个IP访问外 ...
- linux 部署jenkins
1.安装jdk,配置jdk路径,python路径 (当前用户的配置文件) vi .bash_profile export JAVA_HOME=$HOME/local/jdk1.8.0_111 exp ...
- 009 Java集合浅析4
前面一篇教程中,我们分析了List派别中的最常见也最重要的一个类ArrayList<E>.从我们的分析来看,ArrayList作为动态数组的模拟,使用的是连续内存空间来存储数据,带来了可随 ...