记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 ...
随机推荐
- cvsnt 和wincvs 的安装配置既简单操作 2007-07-28 11:33
CVSNT 配置 版本:CVSNT 2.5.03(Scorpio)Build 2382 安装过程:简单一路next即可. 配置: (一)我们先准备好两个目录,分别是KHRoot,和KHTemp.KHR ...
- Android studio 在项目里配置签名 + cmd命令安装apk在测试机
一.在项目里配置签名 搜索百度里有很多可视化操作在项目里配置签名,但是对于已经有签名的旧项目来说,用语句是最方便的. 方法: 第一步:把签名文件放到项目中,和build.gradle的同一级目录下.当 ...
- 实现直方图均衡化(java+opencv)
什么是直方图均衡化? 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度.原始图像由于其灰度分布可能集中在较窄的区间,造成图 ...
- Better Key Sizes (and Attacks) for LWE-Based Encryption
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! 以下是对本文关键部分的摘抄翻译,详情请参见原文 Abstract 基于“learning with errors”(LWE)问题,分析了理 ...
- 记录一次CDH集群邮件报警功能的设置
1.通用的配置CDH邮件报警设置 进入cloudera manager service页面,选择配置 左侧菜单Alert Publisher 勾选[启用电子邮件警报] 邮件服务协议smtp,如果使用s ...
- Markdown - Typora 10分钟入门 - 精简归纳
Markdown - Typora 10分钟入门 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 22 转载请注明出处! 目录 Markdown - Typora 10分钟入门 - 精简归纳 ...
- formily-面向中后台场景的复杂解决方案
正文 在解决企业级应用的前端问题中,表单是个无法绕过的大山,正好最近有时间,调研一下 Formily-来自阿里巴巴的面向中后台复杂场景的表单解决方案,也是一个表单框架,前身是 UForm.主要解决如何 ...
- 深入了解v-model流程
v-model原理 vue中v-model是一个语法糖,所谓的语法糖就是对其他基础功能的二次封装而产生的功能.简单点说,v-model本身就是父组件对子组件状态以及状态改变事件的封装.其实现原理上分为 ...
- Android开发之常用框架WebView详解代码。超详细,送给初学者,完全掌握此控件
这是我特意为新手小白写的一个代码,教大家完完全全掌握WebView, 我感觉,你看懂这个,基本上可以满足以后工作中的需要了,(只针对Webview的使用),但是其实它还有好多功能,比如真正的设计到和H ...
- Selenium 如何复用浏览器【解决扫码登录等问题】
Selenium中复用已经打开的浏览器进行自动化测试,可以辅助我们解决某些登录需要扫二维码之后,才能进行的操作 目前只支持谷歌Chrome浏览器,那需要做哪些准备操作呢?往下看 1.windows和M ...