php Excel 导入
php Excel 导入
public function storeSql()
{
$file = input('file.excel');
$path = ROOT_PATH . 'public' . DS . 'uploads';
if ($file) {
$info = $file->move($path);
if ($info) {
$this->dataStore($info->getPathname());
} else {
$this->error($file->getError());
}
}
}
//数据导入
public function dataStore($filePath)
{
import('phpoffice.phpexcel.Classes.PHPExcel');
import('phpoffice.phpexcel.Classes.IOFactory');
import('phpoffice.phpexcel.Classes.Reader.Excel2007');
$PHPExcel = new \PHPExcel();
$PHPReader = new \PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new \PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
$this->error('上传失败!');
}
}
//读取Excel文件
$PHPExcel = $PHPReader->load($filePath);
//读取excel文件中的第一个工作表
$sheet = $PHPExcel->getSheet(0);
//取得最大的列号
$allColumn = $sheet->getHighestColumn();
//取得最大的行号
$allRow = $sheet->getHighestRow();
$user = new UserOff;
$phones = $user->where('merchant_id', $this->userID)->column('phone');
$all = [];
//从第二行开始插入,第一行是列名
for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
$data['phone'] = $PHPExcel->getActiveSheet()->getCell("A" . $currentRow)->getValue();
$data['point'] = $PHPExcel->getActiveSheet()->getCell("B" . $currentRow)->getValue();
$data['growth'] = $PHPExcel->getActiveSheet()->getCell("C" . $currentRow)->getValue();
$data['card_num'] = $PHPExcel->getActiveSheet()->getCell("D" . $currentRow)->getValue();
$data['user_name'] = $PHPExcel->getActiveSheet()->getCell("E" . $currentRow)->getValue();
$data['merchant_id'] = $this->userID;
$data['add_time'] = time();
$data['phone_no'] = $data['phone'] . $this->userID . "AcDE"; //编号
empty($data['card_num']) && $data['card_num'] = 0;
empty($data['user_name']) && $data['user_name'] = "";
empty($data['phone']) && $data['user_name'] = "";
empty($data['point']) && $data['point'] = 0;
empty($data['growth']) && $data['growth'] = 0;
array_push($all,$data);
}
$allData =$this->diffArr($all,$phones);
$update = $user->saveAll($allData['allDataUp'], true);
//$update = true;
$insert = $user->saveAll($allData['allDataIn'], false);
if ($update || $insert) {
$this->success('数据导入成功!', url('dump/index'));
} else {
$this->error('数据导入失败!');
}
}
php Excel 导入的更多相关文章
- C# Excel导入、导出【源码下载】
本篇主要介绍C#的Excel导入.导出. 目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入
系列目录 前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF6+EasyUI 后台管理系统(6 ...
- 解析大型.NET ERP系统 设计通用Microsoft Excel导入功能
做企业管理软件很难避免与Microsoft Excel打交道,常常是软件做好了,客户要求说再做一个Excel导入功能.导入Excel数据的功能的难度不大,从Excel列数据栏位的取值,验证值,再导入到 ...
- (转)高效的将excel导入sqlserver中
大部分人都知道用oledb来读取数据到dataset,但是读取之后怎么处理dataset就千奇百怪了.很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,System.Data.SqlClie ...
- 安全的将excel导入sqlite3的解决方案
最近在做一个小项目时,需要把一个excel中的数据保存到sqlite3数据库中以备后用,表中有字符也有数字,要用到特定的数据类型方便后续使用,参照网上的方法,将excel文件转换为csv文件后,在导入 ...
- 利用反射实现通用的excel导入导出
如果一个项目中存在多种信息的导入导出,为了简化代码,就需要用反射实现通用的excel导入导出 实例代码如下: 1.创建一个 Book类,并编写set和get方法 package com.bean; p ...
- C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法
C# EXCEL导入 混合列文字为空,找不到可安装的 ISAM的解决办法 使用C#导入 Excel数据到 DataTable,如果连接串中只写 Excel 8.0,则正常的字符列,数值列都没有问题,但 ...
- Excel导入导出的业务进化场景及组件化的设计方案(上)
1:前言 看过我文章的网友们都知道,通常前言都是我用来打酱油扯点闲情的. 自从写了上面一篇文章之后,领导就找我谈话了,怕我有什么想不开. 所以上一篇的(下)篇,目前先不出来了,哪天我异地二次回忆的时候 ...
- Excel 导入到Datatable 中,再使用常规方法写入数据库
首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...
- nopi excel 导入
#region 从Excel导入 /// <summary> /// 读取excel ,默认第一行为标头 /// </summary> /// <param name=& ...
随机推荐
- [JZOJ6244]【NOI2019模拟2019.7.1】Trominoes 【计数】
Description n,m<=10000 Solution 考虑暴力轮廓线DP,按顺序放骨牌 显然轮廓线长度为N+M 轮廓线也是单调的 1表示向上,0表示向右 N个1,M个0 只能放四种骨牌 ...
- 动态调用WebService接口的几种方式
一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过 ...
- 前端js图片上传
前端js图片上传,原理用input type="file"获取图片然后把图片转换成base64编码传到后台. 图片上传 <!DOCTYPE html><html& ...
- R_Studio(学生成绩)使用主成分分析实现属性规约
对11_1_4.csv成绩表进行主成分分析处理 setwd('D:\\data') list.files() #读取数据 dat=read.csv(file="11_1_4.csv" ...
- jmxtrans + OpenTSDB + granafa 监控套件使用手册
需求说明 编写背景 此手册的基础在于对<jmxtrans + influxdb + granafa 监控套件使用手册>的熟悉和使用.本手册仅介绍以下几项: OpenTSDB 的配置安装 对 ...
- Postman下载与安装
融e学-一个专注于重构知识,培养复合型人才的平台:http://www.i-ronge.com/ Postman 的官网下载地址是:https://www.getpostman.com/ 下载后看到压 ...
- sqlserver2012语法
1.SQL Server 2012 Format()方法 SQL Server 从 2012 开始增加了Format方法,可以使用 Format来格式化日期与数字,而且和 C# 里的日期格式化一致,语 ...
- 谈谈 UI 中, Padding 和 Margin 有什么区别?
android:padding 和 android:layout_margin 的区别,其实概念很简单,padding 是站在父 view 的角度描述问题,它规定它里面的内容必须与这个父 view 边 ...
- Go语言引用类型
切片 1.切片定义 a) 声明一个切片 , , } , , } b) 通过make来创建切片 ) c) 通过 := 语法来定义切片 slice := []int{} slice := make([], ...
- mybatis父查询值嵌套传递/column传入多个参数值
mybatis中collection的column传入多个参数值(使用父查询的映射值) property description column 数据库的列名或者列标签别名.与传递给resultSet. ...