一、安装PHPExcel

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

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

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

二、控制器

1.调用PHPExcel

  1. use PHPExcel_IOFactory;
  2. use PHPExcel;

2.导入

  1. // 导入每日流水
  2. public function posImport(){
  3. header("content-type:text/html;charset=utf-8");
  4. //上传excel文件
  5. $file = request()->file('excel');
  6. //将文件保存到public/uploads目录下面
  7. $info = $file->validate(['size'=>1048576,'ext'=>'xls,xlsx'])->move( './uploads');
  8. if($info){
  9. //获取上传到后台的文件名
  10. $fileName = $info->getSaveName();
  11. //获取文件路径
  12. $filePath = Env::get('root_path').'public'.DIRECTORY_SEPARATOR.'uploads'.DIRECTORY_SEPARATOR.$fileName;
  13. //获取文件后缀
  14. $suffix = $info->getExtension();
  15. //判断哪种类型
  16. if($suffix=="xlsx"){
  17. $reader = \PHPExcel_IOFactory::createReader('Excel2007');
  18. }else{
  19. $reader = PHPExcel_IOFactory::createReader('Excel5');
  20. }
  21. }else{
  22. $this->error('文件过大或格式不正确导致上传失败-_-!');
  23. }
  24. //载入excel文件
  25. $excel = $reader->load("$filePath",$encode = 'utf-8');
  26. //读取第一张表
  27. $sheet = $excel->getSheet(0);
  28. //获取总行数
  29. $row_num = $sheet->getHighestRow();
  30. //获取总列数
  31. $col_num = $sheet->getHighestColumn();
  32. $data = []; //数组形式获取表格数据
  33. for ($i = 2; $i <= $row_num; $i ++) {
  34. $data[$i]['code'] = $sheet->getCell("A".$i)->getValue();
  35. $data[$i]['last_code'] = substr($sheet->getCell("A".$i)->getValue(),-6);
  36. $time = date('Y-m-d H:i',\PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell("B".$i)->getValue()));
  37. $data[$i]['time'] = strtotime($time);
  38. //将数据保存到数据库
  39. }
  40. $res = Db::name('pos_code')->insertAll($data);
  41. if($res){
  42. return redirect('/admin/pos/posCodeLog');
  43. }else{
  44. $return = [
  45. 'code' => 0,
  46. 'msg' => '提交失败,请刷新重试'
  47. ];
  48. return json($return);
  49. }
  50. }

3.导出

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

【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. java 实现二叉树结构基本运算详细代码

    static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...

  2. log4j 配置详解

    参考如下两个网址,讲的很详细,先看第一个再看第二个: log4j使用介绍:http://swiftlet.net/archives/683 java日志处理组件log4j--log4j.xml配置详解 ...

  3. Android学习——AsyncTask的使用

    AsyncTask是安卓自带的异步操作类,把异步操作简化并封装好,从而可以让开发者在子线程中更方便地更新UI. AsyncTask为一个抽象类,在继承AsyncTask时需要指定如下三个泛型参数:&l ...

  4. Android(java)学习笔记18:单例模式

    单例模式代码示例: 1. 单例模式之饿汉式: package cn.itcast_03; public class Student { // 构造私有 private Student() { } // ...

  5. pthread使用

    https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingTh ...

  6. 树的直径的求法即相关证明【树形DP || DFS】

    学习大佬:树的直径求法及证明 树的直径 定义: 一棵树的直径就是这棵树上存在的最长路径. 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和.树中最远的两个节点之间的距 ...

  7. sql 查询表的字段数量

    select COUNT(a.name) from sys.all_columns a,sys.tables bwhere a.object_id=b.object_id and b.name='ta ...

  8. SignalR集成Autofac

    SignalR SignalR集成需要 Autofac.SignalR NuGet 包. SignalR 集成提供SignalR 集线器的依赖集成.由于 SignalR 是内部构件,所以不支持Sign ...

  9. 如何学好Spring

    要学好Spring,首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了.Spring核心是IoC容器,所以一定要透彻理解什么是 ...

  10. HDU 1222 Wolf and Rabbit(数学,找规律)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...