设为首页 收藏本站
查看: 1144|回复: 0

[经验分享] PHP的laravel框架后台实现数据导出excel的功能

[复制链接]

尚未签到

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

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

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

  之后,我们需要composer从中国镜像网下载资源,而不是原本的外网。我也试图使用composer从外网下载所需的资源,结果不管翻不FQ都下载失败,所以对composer进行配置使它从国内镜像网下载资源是很有必要的一件事情。
  方法可参考这里:https://pkg.phpcomposer.com/
  我简单讲解一下使用国内镜像配置。在命令行使用cd C:\xampp\htdocs\laravelDemo     你注意这里改成你自己的项目根目录。
  然后在命令行的根目录下输入
  

composer config repo.packagist composer https://packagist.phpcomposer.com  

  回车后,配置便完成了。此时打开项目跟目录下的composer.json文件会发现里面增加了这部分内容:
DSC0004.png

  当然你也可以手动在这个文件中添加这些内容。
  到此我们便完成了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文件:
DSC0005.jpg

  如果你要导出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 ,页面显示如下:
DSC0006.jpg

  当然,Laravel Excel还有很多其它功能,比如将Blade视图导出为Excel或CSV,以及对导入/导出更加细粒度的控制,具体可参考其官方文档: http://www.maatwebsite.nl/laravel-excel/docs
  

例程中的路由控制器注意要用自己的url路径。  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429711-1-1.html 上篇帖子: PHP中的use、命名空间、引入类文件、自动加载类的理解 下篇帖子: PHP安装加载yaf扩展
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表