【tp5.1】composer安装PHPExcel以及导入\导出Excel
一、安装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的更多相关文章
- TP5使用Composer安装phpoffice/phpspreadsheet,导出Excel文件
1.composer安装: composer require phpoffice/phpspreadsheet 2.点击导出按钮,触发控制器里面的方法 wdjzdc() 3. 在控制中引入 use P ...
- tp5.0 composer下载phpexcel 实现导出excel 表格
tp5.0 composer下载phpexcel 实现导出excel 表格 1.在下载好的tp5.0 框架里面使用 composer 下载phpexcel 的插件 composer require p ...
- 使用PHPExcel导入导出excel格式文件
使用PHPExcel导入导出excel格式文件 作者:zccst 因为导出使用较多,以下是导出实现过程. 第一步,将PHPExcel的源码拷贝到项目的lib下 文件包含:PHPExcel.ph ...
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- ASP.NET Core 导入导出Excel xlsx 文件
ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...
- thinkphp导入导出excel表单数据
在PHP项目经常要导入导出Excel表单. 先去下载PHPExcel类库文件,放到相应位置. 我在thinkphp框架中的位置为ThinkPHP/Library/Org/Util/ 导入 在页面上传e ...
- .NET导入导出Excel
若是开发后台系统,ASP.NET MVC中总是涉及了很多导入导出Excel的问题,有的时候处理起来比较烦 如果能使用以下代码解决,就完美了 public class ReportModel { [Ex ...
- C#导入导出Excel表的数据
一:C#导入导出EXCEL文件的类 代码如下: 首先将Microsoft Excel 14.0 Object Library 引用导入 using System; using System.Data; ...
- C#用Infragistics 导入导出Excel(一)
最近项目中有数据的导入导出Excel的需求,这里做简单整理. 公司用的是Infragistics的产品,付费,不需要本地安装Office. 有需要的朋友可以下载 Infragistics.2013.2 ...
随机推荐
- java 实现二叉树结构基本运算详细代码
static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...
- log4j 配置详解
参考如下两个网址,讲的很详细,先看第一个再看第二个: log4j使用介绍:http://swiftlet.net/archives/683 java日志处理组件log4j--log4j.xml配置详解 ...
- Android学习——AsyncTask的使用
AsyncTask是安卓自带的异步操作类,把异步操作简化并封装好,从而可以让开发者在子线程中更方便地更新UI. AsyncTask为一个抽象类,在继承AsyncTask时需要指定如下三个泛型参数:&l ...
- Android(java)学习笔记18:单例模式
单例模式代码示例: 1. 单例模式之饿汉式: package cn.itcast_03; public class Student { // 构造私有 private Student() { } // ...
- pthread使用
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingTh ...
- 树的直径的求法即相关证明【树形DP || DFS】
学习大佬:树的直径求法及证明 树的直径 定义: 一棵树的直径就是这棵树上存在的最长路径. 给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和.树中最远的两个节点之间的距 ...
- sql 查询表的字段数量
select COUNT(a.name) from sys.all_columns a,sys.tables bwhere a.object_id=b.object_id and b.name='ta ...
- SignalR集成Autofac
SignalR SignalR集成需要 Autofac.SignalR NuGet 包. SignalR 集成提供SignalR 集线器的依赖集成.由于 SignalR 是内部构件,所以不支持Sign ...
- 如何学好Spring
要学好Spring,首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了.Spring核心是IoC容器,所以一定要透彻理解什么是 ...
- HDU 1222 Wolf and Rabbit(数学,找规律)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...