一、安装PHPExcel

1.下载:PHPExcel  https://github.com/PHPOffice/PHPExcel

2.解压后:Classes文件夹改名为PHPExcel

3.把文件夹PHPExcel 放到根目录vendor文件夹下

二、控制器

1.调用PHPExcel

use PHPExcel_IOFactory;
use PHPExcel;

2.导入

//    导入每日流水
public function posImport(){
header("content-type:text/html;charset=utf-8");
//上传excel文件
$file = request()->file('excel');
//将文件保存到public/uploads目录下面
$info = $file->validate(['size'=>1048576,'ext'=>'xls,xlsx'])->move( './uploads');
if($info){
//获取上传到后台的文件名
$fileName = $info->getSaveName();
//获取文件路径
$filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.$fileName;
//获取文件后缀
$suffix = $info->getExtension();
//判断哪种类型
if($suffix=="xlsx"){
$reader = \PHPExcel_IOFactory::createReader('Excel2007');
}else{
$reader = PHPExcel_IOFactory::createReader('Excel5');
}
}else{
$this->error('文件过大或格式不正确导致上传失败-_-!');
}
//载入excel文件
$excel = $reader->load("$filePath",$encode = 'utf-8');
//读取第一张表
$sheet = $excel->getSheet(0);
//获取总行数
$row_num = $sheet->getHighestRow();
//获取总列数
$col_num = $sheet->getHighestColumn();
$data = []; //数组形式获取表格数据
for ($i = 2; $i <= $row_num; $i ++) {
$data[$i]['code'] = $sheet->getCell("A".$i)->getValue();
$data[$i]['last_code'] = substr($sheet->getCell("A".$i)->getValue(),-6);
$time = date('Y-m-d H:i',\PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell("B".$i)->getValue()));
$data[$i]['time'] = strtotime($time);
//将数据保存到数据库
}
$res = Db::name('pos_code')->insertAll($data);
if($res){
return redirect('/admin/pos/posCodeLog');
}else{
$return = [
'code' => 0,
'msg' => '提交失败,请刷新重试'
];
return json($return);
}
}

3.导出

//    导出excel
private function outExcel($data){
$objExcel = new PHPExcel();
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');
$objActSheet = $objExcel->getActiveSheet(0);
$objActSheet->setTitle('领取报表');//设置excel的标题
$objActSheet->setCellValue('A1','用户id');
$objActSheet->setCellValue('B1','红包金额(元)');
$objActSheet->setCellValue('C1','时间');
$objActSheet->setCellValue('D1','发放状态'); $baseRow = 2; //数据从N-1行开始往下输出 这里是避免头信息被覆盖
foreach ( $data as $r => $d ) {
$i = $baseRow + $r;
$objExcel->getActiveSheet()->setCellValue('A'.$i,$d['user_id']);
$objExcel->getActiveSheet()->setCellValue('B'.$i,$d['price']);
$objExcel->getActiveSheet()->setCellValue('C'.$i,$d['create_time']);
$objExcel->getActiveSheet()->setCellValue('D'.$i,$d['status'] == 1 ? '成功' : '失败');
}
$objExcel->setActiveSheetIndex(0);
//4、输出
$objExcel->setActiveSheetIndex();
header('Content-Type: applicationnd.ms-excel');
$time=date('Y-m-d');
header("Content-Disposition: attachment;filename=领取报表$time.xls");
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
}

【tp5.1】composer安装PHPExcel以及导入\导出Excel的更多相关文章

  1. TP5使用Composer安装phpoffice/phpspreadsheet,导出Excel文件

    1.composer安装: composer require phpoffice/phpspreadsheet 2.点击导出按钮,触发控制器里面的方法 wdjzdc() 3. 在控制中引入 use P ...

  2. tp5.0 composer下载phpexcel 实现导出excel 表格

    tp5.0 composer下载phpexcel 实现导出excel 表格 1.在下载好的tp5.0 框架里面使用 composer 下载phpexcel 的插件 composer require p ...

  3. 使用PHPExcel导入导出excel格式文件

    使用PHPExcel导入导出excel格式文件  作者:zccst  因为导出使用较多,以下是导出实现过程.  第一步,将PHPExcel的源码拷贝到项目的lib下  文件包含:PHPExcel.ph ...

  4. Linux下mongodb安装及数据导入导出教程

    Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...

  5. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  6. thinkphp导入导出excel表单数据

    在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...

  7. .NET导入导出Excel

    若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...

  8. C#导入导出Excel表的数据

    一:C#导入导出EXCEL文件的类 代码如下: 首先将Microsoft Excel 14.0 Object Library 引用导入 using System; using System.Data; ...

  9. C#用Infragistics 导入导出Excel(一)

    最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2 ...

随机推荐

  1. Visual Studio 快捷键汇总

    常见方法: 强迫智能感知:Ctrl+J.智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因.  撤销:Ctrl+Z.除非你是天才,那么这个快捷键也是 ...

  2. laravel5.4学习笔记

    1.安装laravel可以直接用composer安装,然后用laravel new xxx来新建项目 服务器上安装了composer(php包管理工具)以后, composer global requ ...

  3. thinkphp5设置403 404等http状态页面

    在thinkphp5中如何抛出异常状态码(比如401,403,404等),因为这些能极大的给用户以良好的体验. 因为在上线阶段,任何的系统错误信息都不能让浏览用户给看到,比如404(Not Found ...

  4. May 16th 2017 Week 20th Tuesday

    The most fearful enemy is not having a firm conviction. 最可怕的敌人,就是没有坚强的信念. A firm conviction or belie ...

  5. [原]Machine Learing 入门 —— 开门第0篇

    一.最近懒了 7月没怎么写博客,倒是一直在学Machine Learning的入门知识,在这里给大家推荐一个不错的自学网站:https://www.coursera.org/ ,Andrew Ng是联 ...

  6. python UI自动化实战记录二:请求接口数据并提取数据

    该部分记录如何获取预期结果-接口响应数据,分成两步: 1 获取数据源接口数据 2 提取后续页面对比中要用到的数据 并且为了便于后续调用,将接口相关的都封装到ProjectApi类中. 新建python ...

  7. com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException 异常

    MySQL完整性约束破坏异常:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException 在单向多对一关联关系 ...

  8. HDU 3038 How Many Answers Are Wrong 【YY && 带权并查集】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=3038 How Many Answers Are Wrong Time Limit: 2000/1000 ...

  9. PHP设计模式——装饰器模式

    <?php /** * 装饰器模式 * 如果已有对象的部分内容或功能发生变化,但是不需要修改原始对象的结构,应使用装饰器模式 * * 为了在不修改对象结构的前提下对现有对象的内容或功能稍加修改, ...

  10. jmeter报"msg":"Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported"的解决方法

    1.报"msg":"Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supporte ...