记tp5.1使用composer PhpOffice的xlsx表格文件导入数据库
在项目环境下
composer require phpoffice/phpspreadsheet
在项目中引用
use PhpOffice\PhpSpreadsheet\IOFactory;
下面是 上传xlsx导入数据库方法
public function getExcel(){
$user_id = input('user_id',1);
//ajax 文件跨域 验证
$request_method = $_SERVER['REQUEST_METHOD'];
if ($request_method === 'OPTIONS') {
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Methods:GET, POST, OPTIONS');
header('Access-Control-Max-Age:1728000');
header('Content-Type:text/plain charset=UTF-8');
header('Content-Length: 0',true);
header('status: 204');
header('HTTP/1.0 204 No Content');
} $file = request()->file('file');
if(!$file){
return json(['errcode'=>-1,'errmsg'=>'请上传文件']);
} $info = $file->validate(['size'=>5*1024*1024,'ext'=>'xlsx,xls'])->move('uploads/excel/'.$user_id);
if(!$info){
return json(['errcode'=>-1,'errmsg'=>'请返回xlsx,xls格式表格','fileerr'=>$file->getError()]);
}
//判断文件类型
$suffix = $info->getExtension(); if($suffix=="xlsx"){
$objReader = IOFactory::createReader('Xlsx');
}else{
$objReader = IOFactory::createReader('Xls');
} $objPHPExcel = $objReader->load(Env::get('root_path').'public/uploads/excel/'.$user_id.'/'.$info->getSaveName());
$extension = strtolower( pathinfo($info->getSaveName(), PATHINFO_EXTENSION) ); //读取默认工作表
$worksheet = $objPHPExcel->getSheet(0);
//取得一共有多少行
$allRow = $worksheet->getHighestRow();
$data = []; if($allRow > 101){
return json(['errcode'=>-1,'errmsg'=>'最多一百条']);
} for ($i = 2; $i <= $allRow; $i++)
{
$data = array();
$goods_data = array();
$data['order_sn_third'] = $objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
$goods_data['goods_name'] = $objPHPExcel->getActiveSheet()->getCell('B'.$i)->getValue();
$goods_data['goods_sn'] = $objPHPExcel->getActiveSheet()->getCell('C'.$i)->getValue();
$goods_data['goods_num'] = $objPHPExcel->getActiveSheet()->getCell('D'.$i)->getValue(); $data['consignee'] = $objPHPExcel->getActiveSheet()->getCell('E'.$i)->getValue();
$data['mobile'] = $objPHPExcel->getActiveSheet()->getCell('F'.$i)->getValue();
$data['province'] = $objPHPExcel->getActiveSheet()->getCell('G'.$i)->getValue();
$data['city'] = $objPHPExcel->getActiveSheet()->getCell('H'.$i)->getValue();
$data['district'] = $objPHPExcel->getActiveSheet()->getCell('I'.$i)->getValue();
$data['address'] = $objPHPExcel->getActiveSheet()->getCell('J'.$i)->getValue();
$data['user_note'] = $objPHPExcel->getActiveSheet()->getCell('K'.$i)->getValue(); //防止出现空白Excel导致mysql报错,对数据做下判断
if(empty($data['order_sn_third']) && empty($data['goods_sn'])){
//跳出循环
break;
}
$data['create_time'] = time();
$data['status'] = 1;
$data['user_id'] = $user_id;
$data['order_sn'] = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8); //插入数据库
$order_id = db('order_info')->insertGetId($data);
$goods_data['order_id'] = $order_id;
$res = db('order_goods')->insert($goods_data);
} return json(['errcode'=>0,'errmsg'=>'导入完成']); }
记tp5.1使用composer PhpOffice的xlsx表格文件导入数据库的更多相关文章
- 【代码沉淀】 - EPPlus - 操作xlsx表格文件
EPPlus - Create advanced Excel spreadsheets on the server.web: http://epplus.codeplex.com/nuget: Ins ...
- 在浏览器上打开、预览Excel xlsx表格文件
现在的HTML5,有了FileReader文件读写API, 真是让javascript的能力大幅提升. 解析zip压缩文件.解析Excel xlsx 表格文档各种文件预览,实现起来也有了可能性,以前的 ...
- TP5.0 PHPExcel 数据表格导出导入(原)
今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExcel没有命名空间,所以框架里面的use根本引入不进去, ...
- TP5.0 PHPExcel 数据表格导出导入(引)
TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...
- asp.net NPOI导出xlsx格式文件,打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”
NPOI导出xlsx格式文件,会出现如下情况: 点击“是”: 导出代码如下: /// <summary> /// 将datatable数据写入excel并下载 /// </summa ...
- 用 python 来操作 docx, xlsx 格式文件(一)(使用 xlsxwriter 库操作xlsx格式文件)
需要从数据库读取日志生成相应的 docx,xlsx 文件做相应的记录 所以自然要用到docx, xlsxwriter 库 但是这些库的应用场景非常广泛,任何需要对 word,excel 文件执行重复性 ...
- openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库
openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库¶ https://www.osgeo.cn/openpyxl/index.html
- React中使用react-file-viewer,实现预览office文件(pdf,word,xlsx等文件)前端实现
最近做一个项目要求在前端浏览器可以直接打开office文件(pdf,doc,xlsx等文件).pdf浏览器可以直接打开(可以直接用a标签href="文件地址"或者iframe标签s ...
- tp5下通过composer实现日志记录功能
tp5实现日志记录 1.安装 psr/log composer require psr/log 它的作用就是提供一套接口,实现正常的日志功能! 我们可以来细细的分析一下,LoggerInterface ...
随机推荐
- python去除 数据的 重复行
原文链接:https://www.cnblogs.com/loren880898/p/11303672.html
- python3 - 常用的操作数据库
# 获取手机号数据表的中的数据 sql2 = 'SELECT shoujihao FROM shoujihao' self.cursor.execute(sql2) sjh_dates = self. ...
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- Devops与敏捷二者能否结合?
当前软件行业的趋势倾向于使应用程序开发和部署成为业务运营的重要组成部分.这些公司开始专注于实现像DevOps解决方案这样的方法,这有助于缩短产品开发时间.使用DevOps进行开发减少了交付软件所需的阶 ...
- kvm 虚拟机中鼠标不同步的问题解决方法
在<devices>标签下添加 <input type='tablet' bus='usb'/>
- nova卸载volume源码分析
基于llvm +iscsi协议进行分析 1.客戶端接受请求并路由到 VolumeAttachmentController 其对应的restfull请求格式如下:delete /servers/{ser ...
- String,StringBuffer,StringBuillder的底层结构
一:StringBuffer的底层 (1)线程安全的字符串操作类 (2)通过synchronized关键字声明同步方法,保证多线程环境下数据安全 public synchronized StringB ...
- 使用xShell 连接 docker 使用说明
方式一:当不知道docker里镜像的root密码的时候 1.从Docker Hub下载需要的镜像 docker pull 镜像名字 2.使用docker run命令启动容器 docker run -i ...
- 《神经网络的梯度推导与代码验证》之CNN的前向传播和反向梯度推导
在FNN(DNN)的前向传播,反向梯度推导以及代码验证中,我们不仅总结了FNN(DNN)这种神经网络结构的前向传播和反向梯度求导公式,还通过tensorflow的自动求微分工具验证了其准确性.在本篇章 ...
- Unity中接收服务器消息并广播事件的实现
最近接触的项目,是一个棋牌游戏,棋牌游戏需要在前端进行一些操作,然后向服务器发送数据包,在服务器接收到客户端的数据后,会在服务端进行一系列的判断之后,然后发送给客户端一个返回数据,客户端接收到这个返回 ...