原博客地址 https://www.jianshu.com/p/7287ebdc77bb

Install (安装)
//> composer.json 中 require中添加如下:
"maatwebsite/excel": "~2.1.0"
//> 然后使用如下composer命令安装 composer update 
//> config/app.php 中注册 服务提供类 providers数组中
Maatwebsite\Excel\ExcelServiceProvider::class,
//> config/app.php 中注册 门面类 aliases 数组中
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
//> 移动配置文件 excel.php 到 config目录下面 命令:
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
//> 服务器容器中绑定 的是'excel'
App::make('excel')
Import(导入)
  • 我们来修改 config/excel.php 的导入配置参数
//> 修改一下 excel.php 配置文件 的 import 数组参数,否则导入时只解析ASCII(对中文不敏感)
'to_ascii'  => false # 这个参数改为false(否则,只会得到excel的ascii编码以内组成的字符串) 'heading' => 'slugged' # 表示得到关联数组(键是Excel的A1行标题) # 'heading' => false # 表示得到索引数组(从0开始到...)(其他参数请自行尝试) 'startRow' => 1 # 如果没特殊需求,就使用默认值(表示开始取得位置 row :从第几行还是取值) # 这里就采用默认值吧(输入、输出编码) 'encoding' => [ 'input' => 'UTF-8', 'output' => 'UTF-8' ], # 根据需要适当配置该参数(作用:如果设置为true,会自动忽略为空的某一数值) # 比如 SPU标题下存在一行为空值,那么该行中就不会出现 apu => null 情况(会自动忽略) 'ignoreEmpty' => false, # 改值为 false (表示:当前我们默认只或的一个sheet文件);true:表示当前默认获取多个sheet文件;(如果不是多文件导入,默认设置为false) 'force_sheets_collection' => false, //> 其他import参数,遇到再详细讨论 
//> 文件导入Excel::load($fileName, function ($reader){ foreach ($reader->get() as $item){ dump($item); } }); # 参看一下上传控制器 动作 public function excel(Request $request){ //> 判断请求类型 if( $request->isMethod('post') && $_FILES['file'] ){ //> 获取上传文件路径 $_FILES if( $_FILES['file']['error'] == 0 ){ //> 获取上传文件名称(已便于后面判断是否上传需要后缀文件) $name = $_FILES['file']['name']; //> 获取上传文件后缀 如(xls exe xlsx 等) $ext = strtolower(trim(substr($name,(strpos($name,'.')+1)))); //> 判断文件是否为指定的上传文件后缀 if( ! in_array($ext,array('xls','xlsx')) ){ //> 返回上一次请求位置,并携带错误消息 return redirect()->back()->withErrors('请输入xls或xlsx后缀文件')->withInput(); } //> 获取文件上传路径 $fileName = $_FILES['file']['tmp_name']; //> excel文件导入 上传文件 Excel::load($fileName, function ($reader){ //> 处理上传文件数据 此时 处理多个上传的 sheet 文件 foreach ($reader->get() as $item){ //> 处理相关上传excel数据 dump($item); } }); } exit; } return redirect()->route('home.index'); } //> 现在我们讨论一下get()和all()方法 load回调的$reader->get()或$reader->all()并没有很大的区别(得到结果都是一样的) # 获取 sheet 标题 (改标题) $reader->getTitle() 
# 获取指定 前 $limit 行 数据
# ->takeRows($limit) 获取指定的前$limit条数据
Excel::load($fileName, function ($reader){ //> takeRows 限制获取数据 foreach ($reader->takeRows(10)->get() as $item) { dump($item); } }); # ->limitRows($start=0,$end) 获取指定长度数据 Excel::load($fileName, function ($reader){ //> limitRows(5,10):获取第5条到第10条数据 foreach ($reader->limitRows(5,10)->get() as $item) { dump($item); } }); # ->skipRows($num):跳过指定行 Excel::load($fileName, function ($reader){ //> skipRows($num) :开始跳过多少行,在取数据(这里:从第5行开始,取10条数据) //> skipRows和takeRows一起使用才能达到上面描述的效果(和limitRows()好像就无效了) foreach ($reader->skipRows(5)->takeRows(10)->get() as $item) { dump($item); } }); 
//> 上面是获取行;下面介绍获取列
# ->takeColumns()  类比 takeRows()方法:只是takeColumns获取的是列数据
# ->limitColumns() 类比 limitRows()方法:只是limitColumns()获取的是列数据
# ->skipColumns() 类比 skipColumns()方法: 只是skipColumns()跳过的列 
//> toArray() 对象转换为数组
Excel::load($fileName, function ($reader){ //> 这样使用也是可以的 $reader->get()->toArray(); foreach ($reader->get() as $item) { //> toArray() 转换为数组 dump($item->toArray()); } }); //> toObject() 转换为对象 # toObject() 好像并没有多大用处(一直提示错误) 
Laravel Excel提供了两个打印方法(并没有多个用处)
$reader->dump();
$reader->dd();
//> each() 遍历方法(该方法类似 foreach)
Excel::load($fileName, function ($reader){ $reader->each(function($sheet){ $sheet->each(function($row){ dump($row); }); }); }); 
  • 选择页和列
//> Excel门面提供一个 selectSheets(...$sheet) 方法:允许打开指定的sheet文件
# 当我们上传多个sheet文件需要被处理时,加载指定的sheet文件就可以使用该方法
Excel::selectSheets('sheet1', 'sheet2')->load(); //> 当然我们也可以选择一张sheet表加载 //> 通过索引加载sheet文件 Excel::selectSheetsByIndex(0, 1)->load(); //> 表示加载第一个第二个sheet文件 
//> 获取指定sheet文件指定字段
$reader->select(array('firstname', 'lastname'))->get(); //> 获取firstname和lastname字段 # Or $reader->get(array('firstname', 'lastname')); //> 直接给get()传递参数 
  • 日期处理
//> 日期形式默认会被解析成Carbon对象 如 2017-01-01 08:00
//> 我们来看一下日期配置参数
dates => [//> 是否开启日期解析:默认开启(解析日期字符串)//> 如果设置为false:2017-01-01 08:00 可能会得到一个 1/1/17 08:00结果(由于美格式(月/日/年)可能会有些区别) 'enabled' => true, //> 日期格式:如果设置为false 将返回一个Carbon时间对象 # 'format' => 'U' 时:返回一个时间戳 如 2016/1/1 8:12:00 => 1451635920 'format' => false, //> 日期字段,那些字段是日期字段 如果不存在值:默认解析值为字符串 时间的形式的 数据 //> 如果写上:解析指定的字段 值 为指定字符串的形式 'columns' => [] ], //> ---------------------------------------------------------- //> date 参数是处理整个导入文件时(如果我们想处理单独某个字段数据时) # ->formatDates($boolean, $format) 开启或关闭 日期 参数 $reader->formatDates(true); $reader->formatDates(false); $reader->formatDates(true, 'Y-m-d H:i'); //> 转换为 Y-m-d H:i 时间形式 Excel::load($fileName, function ($reader){ $reader->formatDates(false)->each(function($sheet){ $sheet->each(function($row){ dump($row); }); }); }); $reader->formatDates(true, 'U'); 装换为时间戳形式 //> format($dateFormat) 转换为指定数据形式 Excel::load($fileName, function ($reader){ $reader->each(function($sheet){ $sheet->each(function($row){ dump($row->{"颜色分类"}); dump($row->{"颜色分类"}->format('U')); dump($row->{"颜色分类"}->format('Y-m-d')); }); exit; }); }); //> setDateFormat($format) 默认返回指定形式,不在返回Carbon对象 $reader->setDateFormat('Y-m-d'); //> 设置日期列 setDateColumns() $reader->setDateColumns(array( 'created_at', 'deleted_at' ))->get(); 
import配置文件 参数 :calculate 是否开启计算 (经测试,没什么用处)
// Enable calculation
$reader->calculate();
// Disable calculation
$reader->calculate(false);

转载于:https://www.cnblogs.com/matengfei123/p/11239045.html

Laravel -- Excel 导入(import) (v2.1.0)相关推荐

  1. PbootCMS独立插件系列之Word+Excel导入完全免费版V1.0

    原文链接+视频演示:PbootCMS独立插件系列之Word+Excel导入完全免费版V1.0 完全独立控制器,不影响官方后续更新,免费插件,允许随意传播分享,但禁止用来谋取不正当利益,当然,君子易处, ...

  2. laravel Excel导入导出

    1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该 ...

  3. java 对excel 截图_java基于poi实现快速操作Excel的工具[v2.1.0]版本更新

    Excel4J v2.x 一. v2.x新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注 ...

  4. laravel excel导入导出box/spout

    一.安装 包地址 https://packagist.org/packages/box/spout github地址 https://github.com/box/spout 安装包 composer ...

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

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

  6. Laravel Excel实现Excel/CSV文件导入导出的功能详解(合并单元格,设置单元格样式)

    Laravel Excel实现Excel/CSV文件导入导出(合并单元格,设置单元格样式) 这篇文章主要给大家介绍了关于在Laravel中如何使用Laravel Excel实现Excel/CSV文件导 ...

  7. 使用Easy Excel导入数据,性别为男女,数据库值为0、1

    Controller控制层 @ApiOperation(value = "用户 - 导出")@GetMapping(value = "/export")publ ...

  8. import excel to mysql_将 Microsoft Excel 导入至 MySQL

    将 Microsoft Excel 导入至 MySQL 一.前言 我得到了一份 Microsoft Excel 表格,里面记录了数据信息需要导入至 SQL 数据库. 如果只是导入数据,当然用 MSSQ ...

  9. excel导入csv文件_如何将包含以0开头的列的CSV文件导入Excel

    excel导入csv文件 Microsoft Excel will automatically convert data columns into the format that it thinks ...

最新文章

  1. 支付宝支付-提现到个人支付宝
  2. mysql在线增加字段_MySQL在线加字段实现原理
  3. Python获取当前系统时间
  4. 即使对象属性显示在控制台日志中,也无法访问
  5. 零基础学python书籍-清华大学出版社-图书详情-《零基础入门学习Python》
  6. 需要额外端口信息_使用Python进行TCP端口扫描
  7. 马云:员工表现不好,老板要先检讨
  8. ElementUI:修改tabs标签鼠标悬浮和选中标签
  9. 用深度优先搜索解决最长路径问题
  10. 服务器运维监控知识体系
  11. DTFT和DFT有何区别?一文为你讲解清楚
  12. PID温度控制参数整定方法
  13. 《你要如何衡量你的人生》书籍读后感
  14. Exception evaluating SpringEL expression异常处理
  15. 复旦大学计算机网络专业,复旦大学计算机网络专业计划.doc
  16. Mac 安装第三方来源软件
  17. no matching distribution found for XXX 或 read timed out解决办法
  18. 分支预测优化之__builtin_expect
  19. 由2022的数学奥林匹克竞赛(IMO)说起
  20. QQ音乐做直播:与秀场无关,对数字音乐产业有何影响?

热门文章

  1. Visual Studio 2019 v16.9 Preview 3 发布
  2. c语言返回二叉树的大小,C语言中计算二叉树的宽度的两种方式
  3. linux系统vi光标移动字符,Linux vim光标移动快捷键
  4. tp5 前台页面获取url链接里的参数,如下
  5. 电话号码正则表达式 (包含电话号码 和 手机号码)
  6. 生日快乐页面_宇智波佐助生日快乐!参与活动,豚豚为你送福利!
  7. mds算法python函数_分享python mds,sha256加密算法,c#对应sha256加密算法
  8. php openssl des ecb,php7.2 des-ede3-ecb加密报错:openssl_encrypt():Unknown cipher algorithm 落叶随风博客...
  9. 程序员和注册会计师的地位_“注册会计师和律师哪个地位高?”这3张图给出了答案!...
  10. 菜鸟教程php上传图片,PHP 文件上传