downmovies 发表于 2017-12-30 15:27:40

PHP的laravel框架后台实现数据导出excel的功能

  要想在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。

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

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

  之后,我们需要composer从中国镜像网下载资源,而不是原本的外网。我也试图使用composer从外网下载所需的资源,结果不管翻不FQ都下载失败,所以对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路径。  
页: [1]
查看完整版本: PHP的laravel框架后台实现数据导出excel的功能