Laravel 上使用 phpexcel的两种方式
- 1229
文章采集与网上
方式1。使用原生的phpexcel ,
http://blog.csdn.net/CSwfe/article/details/52748046?locationNum=1
1、在app目录下创建一个新的文件夹,命名libs(可自定义) app/libs/phpExcel
2、(可选)考虑到后面可能会引用很多库,so,在libs下再创建一个phpExcel文件夹,把phpExcel类放入此文件夹下。
3、找到根目录下的composer.json文件
4、找到composer.json中定义的(看我备注)
//加入phpExcel类的路径
plain copy
- "autoload": {
- "classmap": [
- "database",
- "app/libs/phpExcel"
- ],
- "psr-4": {
- "App\\": "app/"
- }
- },
5、安装composer,windows下可以在百度上下载
6、运行命令行进入项目根目录,执行“composer dumpautoload”,
7、在控制器中use PHPExcel
8、在方法中实例化phpExccel对象,打印该对象看phpExcel类是否引入成功。
$objPHPExcel = new PHPExcel();
print_r($objPHPExcel);
==========以上是引入phpExcel类步骤(其它第三方类与此类似)============
<span style="font-size:18px;">以下开始excel导入导出</span>
//导出 控制器中use PHPExcel; use IOFactory;
- public function phpexcel()
- {
- //$objPHPExcel = new PHPExcel();
- //print_r($objPHPExcel);
- $query =DB::table('goods')->get();
- //$query =$this ->db->query($sql);
- //print_r($query);
- if(!$query)return false;
- //Starting the PHPExcel library
- //加载PHPExcel类
- //$this->load->library('PHPExcel');
- //$this->load ->library('PHPExcel/IOFactory');
- $objPHPExcel= new PHPExcel();
- include_once('../app/libs/phpexcel/phpexcel/IOFactory.php');
- $objPHPExcel->getProperties()-> setTitle("export") ->setDescription("none");
- $objPHPExcel-> setActiveSheetIndex(0);
- //Fieldnamesinthefirstrow
- $fields = DB::select("select COLUMN_NAME from information_schema.COLUMNS where
- table_name = 'goods';");
- //print_r($fields);die;
- $col = 0;
- foreach($fields as $field){
- $field =$field['COLUMN_NAME'];
- $objPHPExcel-> getActiveSheet() -> setCellValueByColumnAndRow($col, 1,$field);
- $col++;
- }
- // die;
- //Fetchingthetabledata
- $row = 2;
- foreach($query as $data)
- {
- $col =0;
- foreach($fields $field)
- {
- //print_r($data);
- $field =$field['COLUMN_NAME'];
- $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col,$row,!empty($data["$field"])?$data["$field"]:'');
- $col++;
- }
- $row++;
- }
- //die;
- $objPHPExcel-> setActiveSheetIndex(0);
- $objWriter =IOFactory :: createWriter($objPHPExcel, 'Excel5');
- //Sendingheaderstoforcetheusertodownloadthefile
- header('Content-Type:application/vnd.ms-excel');
- //header('Content-Disposition:attachment;filename="Products_' .date('dMy') . '.xls"');
- header('Content-Disposition:attachment;filename="Brand_' .date('Y-m-d') . '.xls"');
- header('Cache-Control:max-age=0');
- $objWriter-> save('php://output');
- }
- 控制器中use IOFactory; use PHPExcel_Cell;
- public function ru(Request $request){
- $tmp_file =$_FILES ['file_stu'] ['tmp_name'];
- $file_types =explode ( ".", $_FILES ['file_stu'] ['name'] );
- $file_type =$file_types [count ( $file_types ) - 1];
- /*判别是不是.xls文件,判别是不是excel文件*/
- if (strtolower( $file_type ) != "xls"){
- $this->error ( '不是Excel文件,重新上传' );
- }
- $savePath ="./excel/";
- /*以时间来命名上传的文件*/
- $str =date('Ymdhis');
- $file_name =$str . "." . $file_type;
- //echo$file_name;die;
- $request->file('file_stu')->move($savePath, $file_name);
- /*是否上传成功*/
- /*if(!copy($tmp_file,$savePath.$file_name)){
- $this->error ( '上传失败' );
- }*/
- //要获得新的文件路径+名字
- $fullpath =$savePath.$file_name;
- //echo$fullpath;die;
- $re =$this->read($fullpath,'utf-8');
- //print_r($re);die;
- for($i=1;$i<count($re);$i++){
- //print_r($re);
- //echo$re[$i][1];
- $adds =DB::table('goods')->insert(['gname' => $re[$i][1], 'gprice' =>$re[$i][2]]);
- }
- //die;
- if($adds){
- echo"<script>alert('导入成功');location.href='daoru'</script>";
- }else{
- echo"<script>alert('导入失败');location.href='daoru'</script>";
- }
- }
- public function read($filename,$encode='utf-8')
- {
- // ../ 一般情况不管处于什么子目录子需要这样子即可 例如\app\Admin\Controllers\WechatMercharntPay\OrderListTodayController.php
- include_once('../app/libs/phpexcel/phpexcel/IOFactory.php');
- //$this->load ->library('PHPExcel/IOFactory');
- $objReader =IOFactory::createReader('Excel5');
- $objReader->setReadDataOnly(true);
- $objPHPExcel= $objReader->load($filename);
- $objWorksheet= $objPHPExcel->getActiveSheet();
- $highestRow =$objWorksheet->getHighestRow();
- //echo$highestRow;die;
- $highestColumn = $objWorksheet->getHighestColumn();
- //echo$highestColumn;die;
- $highestColumnIndex =PHPExcel_Cell::columnIndexFromString($highestColumn);
- $excelData =array();
- for($row = 1;$row <= $highestRow; $row++) {
- for ($col= 0; $col < $highestColumnIndex; $col++) {
- $excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
- }
- }
- return $excelData;
- }
phpExcel导入导出终于完成了,赶快尝试一下吧
第二方法 用集成方法 maatwebsite 集成类,但是不支持一些文件。已经修复
http://blog.csdn.net/zhwxl_zyx/article/details/47251491
并修复其中的问题
\vendor\maatwebsite\excel\src\Maatwebsite\Excel\Readers\LaravelExcelReader.php
修改后的版本
https://github.com/yanggg1133/Laravel-Excel
增加
- /*
- * @desc 返回所有数据
- * @author 绍兴远帆软件有限公司 主营 ewshop网店系统 远帆自动售货机系统 手机话费流量充值系统 票务销售系统 点餐外卖系统 网店进销存系统
- * @website http://www.ewshop.net/
- * */
- public function readAll()
- {
- // ../ 一般情况不管处于什么子目录子需要这样子即可 例如\app\Admin\Controllers\WechatMercharntPay\OrderListTodayController.php
- //include_once('../app/libs/phpexcel/phpexcel/IOFactory.php');
- //$this->load ->library('PHPExcel/IOFactory');
- //$this->reader =IOFactory::createReader('Excel5');
- //$this->reader->setReadDataOnly(true);
- $objPHPExcel= $this->excel;
- $objWorksheet= $objPHPExcel->getActiveSheet();
- $highestRow =$objWorksheet->getHighestRow();
- //echo$highestRow;die;
- $highestColumn = $objWorksheet->getHighestColumn();
- //echo$highestColumn;die;
- $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
- $excelData =array();
- for($row = 1;$row <= $highestRow; $row++) {
- for ($col= 0; $col < $highestColumnIndex; $col++) {
- $excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();
- }
- }
- return $excelData;
- }
Laravel 4
"maatwebsite/excel": "~1.3"
Laravel 5
"maatwebsite/excel": "~2.0"
- "require-dev": {
- "fzaninotto/faker": "~1.4",
- "mockery/mockery": "0.9.*",
- "phpunit/phpunit": "~4.0",
- "phpspec/phpspec": "~2.1",
- "maatwebsite/excel": "~2.0.0"
- },
添加完后执行
composer update
After updating composer, add the ServiceProvider to
the providers array in app/config/app.php
'Maatwebsite\Excel\ExcelServiceProvider',
You can use the facade for shorter code. Add this to
your aliasses:
'Excel' => 'Maatwebsite\Excel\Facades\Excel',
The class is binded to the ioC as excel
$excel = App::make('excel');
Laravel 4
Laravel Excel includes several config settings for
import-, export-, view- and CSV-specific settings. Use the artisan publish
command to publish the config file to your project.
php artisan config:publish maatwebsite/excel
The config files can now be found
at app/config/packages/maatwebsite/excel
Laravel 5
To publish the config settings in Laravel 5
use:
php artisan vendor:publish
This will add an excel.php
config
file to your config folder.
详细用法请参考官网 http://www.maatwebsite.nl/laravel-excel/docs/getting-started
Laravel 上使用 phpexcel的两种方式的更多相关文章
- 转载:删除github上文件夹的两种方式
http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追 ...
- button上加上图片的两种方式
//// ViewController.m// UIButtonDemo//// Created by hehe on 15/9/15.// Copyright (c) 2015年 wang. ...
- Github 上传代码的两种方式
上传本地代码/文件->Github 折腾了半天时间... Github前期准备部分 1)登录github,新建一个 repository 2)repository 命名 3)Github是一个托 ...
- thinkphp 返回上一页的两种方式
<div > <a class="details_back" href="{:U('Admin/SinglePageManagement/index') ...
- Django上传文件的两种方式
基于form表单上传文件 HTML <h3>基于form表单的上传文件</h3> <form action="" method="post& ...
- springMVC两种方式实现多文件上传及效率比较
springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...
- egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名
egg.js 通过 form 和 ajax 两种方式上传文件并自定义目录和文件名 评论:10 · 阅读:8437· 喜欢:0 一.需求 二.CSRF 校验 三.通过 form 表单上传文件 四.通过 ...
- curl文件上传有两种方式,一种是post_fileds,一种是infile
curl文件上传有两种方式,一种是POSTFIELDS,一种是INFILE,POSTFIELDS传递@实际地址,INFILE传递文件流句柄! );curl_setopt($ch, CURLOPT_PO ...
- Android手机上监听短信的两种方式
Android手机上监听短信有两种方式: 1. 接受系统的短信广播,操作短信内容. 优点:操作方便,适合简单的短信应用. 缺点:来信会在状态栏显示通知信息. AndroidManifest.xml: ...
随机推荐
- 搭建Hive 2.1.1 基于Hadoop 2.6.1 和 Ubuntu 16.0.4 记录
Hadoop Hive Hbase 对应版本 Hive官网下载 我们以Hadoop版本作为参考适配Hive Hbase即可, Hadoop版本是2.6.1 所以可以选择Hive1.2.1以上版 ...
- Sklearn数据集与机器学习
sklearn数据集与机器学习组成 机器学习组成:模型.策略.优化 <统计机器学习>中指出:机器学习=模型+策略+算法.其实机器学习可以表示为:Learning= Representati ...
- Flutter main future mirotask 的执行顺序
下面这段代码的输出是什么? import 'dart:async'; main() { print('main #1 of 2'); scheduleMicrotask(() => print( ...
- uva-10344
题意: 枚举23点,注意,数字也是可以枚举的,wa了一次 #include<stdio.h> #include<iostream> #include<sstream> ...
- 4. 纯 CSS 创作一个金属光泽 3D 按钮特效
原文地址:https://segmentfault.com/a/1190000014599280 HTML代码: <div class="box">BUTTON< ...
- 返回标签数据示例 (PHP)
标签接口函数 获取标签数据 array uc_tag_get(string tagname [, array nums]) 函数参数 参数 含义 string tagname 标签名称 array n ...
- 黑盒测试用例设计——PICT
一.简单用法 在PICT安装目录下新建一个txt文本.把参数填入txt文本中.[内容包括(注意格式<ParamName> : <Value1>, <Value2> ...
- Shell常用命令find、grep总结
一.find 命令 find 命令的常用形式可以简化为 find [path...][expression] path:find 命令查找的目录路径,其中 ./ 表示当前目录,/ 表示系统根目录 ex ...
- mysqldump之不老将
–add-drop-database 每个数据库创建之前添加drop数据库语句.mysqldump -uroot -p –all-databases –add-drop-database –add-d ...
- storm集群相关资料
1. Storm集群组件 Storm集群中包含两类节点:主控节点(Master Node)和工作节点(Work Node).其分别对应的角色如下: 主控节点(Master Node)上运行一个被称为N ...