layui php phpexcel导出,Yii2 基于 layui 的 Excel 上传并导入数据(含分页)

2023-11-02

安装命令:composer require phpoffice/phpexcel

引入layui包,我这里用的是2.4.5的版本,请自行下载对应版本

layui前台页面

导入文件

卡号信息

layui.use(['form','element','upload','table'], function(){

var element = layui.element;

var upload = layui.upload;

var table = layui.table;

upload.render({

elem:'#file',

url:'=Url::to(["sales/re-charge-upload"])?>',

accept: 'file',

size: 5120,

exts:'xlsx',

//上传前的回调

before: function(obj){

layer.load(2);

},

//上传成功的回调

done: function(res, index, upload){

layer.closeAll('loading');

//执行渲染

$('#ImportList').show();

table.render({

elem: '#ImportExcel' //指定原始表格元素选择器(推荐id选择器)

,cols: [[

{field: 'agentId', title: '分销商编号',width:100,unresize:true},

{field: 'vcOrderId', title: '销售单号',width:120,unresize:true},

{field: 'productName', title: '产品名称',width:100,unresize:true},

{field: 'vcUnitName', title: '产品单位',width:100,unresize:true},

{field: 'nFXRate', title: '产品汇率',width:100,unresize:true},

{field: 'cardId', title: '卡号',width:'',unresize:true},

{field: 'initBalance', title: '初始值',width:100,unresize:true},

{field: 'cardBalance', title: '当前余额',width:100,unresize:true},

{field: 'cardStatus', title: '卡状态',width:80,unresize:true}

]] //设置表头

,data:res.data

,page:true

,limit:10

,skin:'line'

,text:'导入数据异常,请重新导入'

});

table.render();

},

//上传错误的回调

error: function(res,index, upload){

layer.closeAll('loading');

}

});

});

Yii2 后台代码

//导入excel文件并解析数据

public function actionReChargeUpload(){

$request = Yii::$app->request;

if ($request->isAjax){

$params = $_FILES['file'];

if (!empty($params)) {

$file_name = $params['name'];

$temp_name = $params['tmp_name'];

$error = $params['error'];

$arr = pathinfo($file_name);

$ext_suffix = $arr['extension'];

$allow_suffix = ['xlsx'];

if (!in_array($ext_suffix, $allow_suffix)) {

return $this->asJson(['msg' => '上传的文件类型只能是xlsx', 'code' => 400]);

}

if (!file_exists('uploads')) {

mkdir('uploads');

}

$new_filename = date('YmdHis', time()) . rand(100, 1000) . '.' . $ext_suffix;

if (move_uploaded_file($temp_name, 'uploads/' . $new_filename)) {

$excelData = json_decode($this->actionImportExcel('uploads/' . $new_filename),true);

if (!empty($excelData)) {

return $this->asJson(['msg' => '导入成功', 'data' => $excelData, 'code' => 200]);

}else{

return $this->asJson(['msg' => '导入失败', 'data' => [], 'code' => 200]);

}

} else {

return $this->asJson(['msg' => '导入失败,错误码:' . $error, 'code' => 400]);

}

}else{

return $this->asJson(['msg' => '文件导入失败,没有找到数据流', 'code' => 400]);

}

}else{

return $this->asJson(['请求错误','code'=>400]);

}

}

//解析excel文件数据

public function actionImportExcel($filename='uploads/20190920105001627.xlsx'){

$dataArray = [];

$Sheets = \PHPExcel_IOFactory::load($filename);

$dataArray = $Sheets->getSheet(0)->toArray();

array_shift($dataArray);

$excel_array = [];

foreach($dataArray as $k=>$v) {

$excel_array[$k]['cardId'] = $v[0];

$excel_array[$k]['cardStatus'] = $v[1];

$excel_array[$k]['initBalance'] = $v[2];

$excel_array[$k]['cardBalance'] = $v[3];

$excel_array[$k]['agentId'] = $v[4];

$excel_array[$k]['cardNo'] = $v[5];

$excel_array[$k]['vcOrderId'] = '-';

$excel_array[$k]['nFXRate'] = '-';

$excel_array[$k]['vcUnitName'] = '-';

$excel_array[$k]['productName'] = '-';

}

return json_encode($excel_array);

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui php phpexcel导出,Yii2 基于 layui 的 Excel 上传并导入数据(含分页) 的相关文章

  • 引入flutter module,运行时flutter_webview_plugin报错:Unhandled Exception: MissingPluginException

    异常信息 Android原生项目引入了一个flutter module flutter module用到了一个flutter写的sdk sdk需要使用webview来执行js代码 因此sdk引用了flutter webview plugin
  • mysql 分区表合并_MySQL 合并表、分区表

    合并表 合并表示一种早期的 简单的分区实现 在未来可能被淘汰 不推荐使用 限制 合并表和子表的字段 索引要完全相同 即使子表上有主键限制 合并表中仍然会出现重复值 如果删除其中一个子表 表可能还存在 带只能通过合并表访问 视操作系统而定 合
  • @GetMapping 接多个参数的写法

    后面拼接接着拼接上去就行了 此上方面针对于 接收多个未知参数 但是针对有很多需要模糊查询的方面 如果 我们所需要的接收的参数 是我们实体类对象的话 就不需要这么麻烦了 直接带入实体类对象 用即可
  • qt 串口通信

    qt串口通信 需要用到QSerialport类 1 pro文件中添加QT serialport 2 获取当前有哪些串口设备 QSerialPortInfo availablePorts 3 设置要打开的串口 setPortName 然后打开
  • 前端人员学习postman

    前端人员使用postman postman介绍 下载安装 posman的基本操作 主要进的是如何新建一个文件夹 然后新建请求 postman发送不同请求 讲的是如何发送不同类型的请求 发送get请求 发送post请求 body里面数据类型的
  • 人工智能科技成熟的11个Github上免费开源项目,很多电影中才有的场景应用到现实颠覆普通人的认知和想象

    人工智能科技成熟的11个Github上免费开源项目 很多电影中才有的场景应用到现实颠覆普通人的认知和想象 全文大纲 PULSE 该开源项目可以通过给图片增加像素点来实现去马赛克或高清化 Depix 给打了马赛克的文字去码 TecoGAN 给
  • Wireshark数据抓包分析之ARP协议

    目录 预备知识 1 知识储备 2 什么是ARP 3 ARP工作流程 4 ARP缓存表 实验目的 实验环境 实验步骤一 实验步骤二 实验步骤三 预备知识 1 知识储备 推荐两本好书 TCP IP详解卷1 http www pc6 com so
  • 两相混合步进电机(简单驱动器)simulink仿真

    1 目的 主要是控制步进电机的正反转以及周期性的转动一个步距角度 驱动模式为整步4拍不涉及到对转速的控制 比较基础 其次比较着重于对模型的分析 如有错误 这里欢迎大佬们指出 推荐先看一下以下的论文 基于simulink的步进电机控制系统仿真
  • MySQL 删除表中的数据记录

    文章目录 前言 一 删除表中的数据记录 1 删除特定数据记录 2 删除所有数据记录 总结 前言 删除数据记录是数据操作中常见的操作 可以删除表中已经存在的数据记录 在MySQL中可以通过DELETE语句来删除数据记录 该SQL语句可以通过以
  • JAVA中extends 与implements区别

    http www cnblogs com hnrainll archive 2011 10 11 2207773 html JAVA中extends 与implements有啥区别 1 在类的声明中 通过关键字extends来创建一个类的子
  • 爬取豆瓣电影排行榜top 250

    coding utf 8 import requests import re os 爬取豆瓣250 def douban ranking start 构建请求 param start start filter respon requests
  • 使用VS Code断点调试PHP

    vs code 使用一款杰出的轻量级代码编辑器 其中的插件工具不胜枚举而且还在不断增加 使用 vs code 调试 php 代码更是方便简洁 下面我们来一起看一下 1 安装 XDebug 扩展 调试 php 代码最常用的就是 XDebug
  • python:ezdxf——如何使用

    官方文档 https ezdxf readthedocs io en master howto index html 文章目录 一 基本文件 1 设置 获取标头变量 2 设置DXF绘图单元 3 创建更具可读性的DXF文件 DXF漂亮打印机
  • 下载vant源码在本地查看小程序模版

    官网地址 Vant地址 运行 git clone git github com youzan vant weapp git cd vant weapp npm install npm run dev 接着打开微信开发者工具 导入exampl
  • Rethinking BiSeNet For Real-time Semantic Segmentation

    Rethinking BiSeNet For Real time Semantic Segmentation 摘要 BiSeNet已经被证明是一种流行的实时分割的双流网络 然而 其增加额外路径来编码空间信息的原理是耗时的 并且从预训练的任务
  • OSS操作示例

    一 OSS API文档 https www alibabacloud com help zh doc detail 103185 htm spm a2c63 l28256 b99 879 7d315cc5HEvVNn 二 demo ifnd
  • Linux调试工具

    addr2line translates addresses into file names and line numbers Given an address in an executable or an offset in a sect
  • JDBC原始版本,未封装

    JDBC原始版本 未封装 public static void main String args Connection connection null PreparedStatement preparedStatement null Res
  • fastadmin 部署模板变量

    对于 view 内的HTML 可以直接使用 this gt assign group chat id get group chat id

随机推荐

  • Check—强大的C语言单元测试框架

    1 前言 在看基数树源码时 发现源码里面有个deps的依赖文件夹 deps里是一个叫Check的源码安装包 Google之后发现Check原来是C语言单元测试框架 关于单元测试 Wikipedia的介绍点这里 Check 最主要的优点是对于
  • HR SaaS厂商,进入决赛圈

    在愈发需要降本增效的节点 数字化的价值也更在被越来越多的企业重新审视 这种重视不再是之前或有或无的可选项 而是基于真正人效比维度的必选项 作者 斗斗 编辑 皮爷 出品 产业家 SaaS行业 正在发生一些微妙的变化 以HR SaaS赛道为例
  • 红帽企业版linux 7.3,红帽推企业Linux 7.3 新功能特性一览

    原标题 红帽推企业Linux 7 3 新功能特性一览 IT168 云计算 日前红帽宣布推出企业Linux 7 3版本 作为Linux平台的最新版本 红帽方面透漏本次更新的版本在网络与存储功能两方面做到了强化 同时 该版本还引入了关于Linu
  • 跨域ajax原理,跨域 ajax 请求之 cors 原理解析

    本博客不欢迎 各种镜像采集行为 请尊重知识产权法律法规 大家都是程序员 不要闹得不开心 本文是系列文章 上一篇文章地址是 https newsn net say cross domain ajax jsonp html 本文主要说两个高级点
  • 写爬虫遇到验证码识别问题的解决方案

    写爬虫遇到验证码识别问题的解决方案 遇到滑块问题 在写爬虫的时候 经常会遇到滑块问题 很多次都想过尝试如何攻破滑块 但是每次都没成功 除了最开始的极验滑块 当时通过原图和滑块图的对比 能够得出缺口坐标 但是随着极验 网易 腾讯滑块的更新 已
  • 图(Graph)——图的遍历算法

    图 Graph 图的遍历算法 前言 深度优先搜索 广度优先搜索 前言 有了图的存储结构以后 就要考虑解决图的相关问题 关于图的算法有很多 比如最小生成树 最短路径 拓扑排序等 这些算法以后有空补上 现在主要记录图的遍历算法 在介绍前 先给出
  • 贪心之商人的诀窍

    商人的诀窍 Time Limit 1000 ms Memory Limit 65536 KiB Submit Statistic Problem Description E star和von是中国赫赫有名的两位商人 俗话说的好无商不奸 最近
  • web端生成pdf,前端生成pdf导出并自定义页眉页脚

    web前端生成pdf文档 2023 06 15 根据码友 咔布哩 需求补充完善一丢丢功能 2023 05 08 重新整理 封装目录结构图 generatePdfFile config js generatePdfFile index js
  • dede后台-系统基本参数无法保存中文/显示空白

    dede后台 系统基本参数无法保存中文 显示空白解决办法 dede templets sys info htm里面搜索 htmlspecialchars row value 替换成 htmlspecialchars row value EN
  • C++—C++程序基础

    文章目录 1 数据类型 1 1 基本数据类型 1 2 字面值常量 1 3 左值和右值 1 4 引用与指针 2 基本输入输出 2 1 输出 2 2 输入 3 函数 3 1 内联函数 3 2 函数的重载 1 数据类型 1 1 基本数据类型 在C
  • 用c语言编写九九乘法表

    这个需要使用两重循环来实现 我们用i表示行 外面一层循环 for i 1 i lt 9 i 外循环 从第一行到第九行 第一步 输出该行的乘法式子 第二步 该行结束换行 我们只需要将中间2步补充完整即可 第二步换行比较简单 printf n
  • 1P+N

    1p n是什么意思 单极二线 就是 一个单片空气开关 和一个漏电保护模块组合在一起的开关 火线 零线一起进出组合开关 当漏电发生时漏电模块带动空气开关跳闸 火线和外网电断开 但是零线是不断开的
  • 公共子串计算

    h1 公共子串计算 h1
  • 双线macd指标参数最佳设置_mt5怎么添加双线macd?mt5中macd怎么设置快慢线?

    在mt4平台中怎么添加双线macd指标 的设置要求是这样的 将MACD的快速EMA参数设定为8 将慢速EMA参数设定 打开mt4 菜单栏选择 数据文件夹 mql4 indicator 将技术指标复制粘贴进去 然后关闭mt4重新打开 菜单栏
  • Android Studio打开XML文件Design显示Waiting for build to finish

    Android Studio打开XML文件Design显示Waiting for build to finish 项目编译完 Design的界面一直出现如下图所示情况 解决方法一 重构项目 按下 ctrl shift A 输入 Sync P
  • [spring处理webservice报文] 3 rest处理soap报文

    目录 1 背景 2 rest请求处理soap报文 2 1 创建controller 3 调试 1 背景 前面两篇讲解了spring处理soap报文的囧途 如下 这一篇讲解下spring如何通过post类型的请求来处理soap报文 sprin
  • rust的错误和异常

    一 错误和异常 在所有语言中 对程序运行不按照设计的 套路 出牌 都是错误 异常可以理解成程序的错误引发了运行的故障 甚至导致程序崩溃 正因为如此 对错误和异常的处理是所有语言都必须拥有的一个行为 无论是从语法层面还是从运行检查层面 都是无
  • 51单片机PWM输出

    PWM输出 学期快结束了 51单片机的学习也差不多告一段落 也快要转入新的学习阶段 寒假找个时间看看32 小白哈哈哈 下面是我学习51定时器弄出来的小东西 一个PWM的输出 还请大神指点 刚开始觉得PWM输出应该不难 很容易做的 但是后面越
  • Spring Boot使用Scheduled完成自动任务

    说明 Scheduled注解可以控制方法定时执行 其中有三个参数可选择 1 fixedDelay控制方法执行的间隔时间 是以上一次方法执行完开始算起 如上一次方法执行阻塞住了 那么直到上一次执行完 并间隔给定的时间后 执行下一次 2 fix
  • layui php phpexcel导出,Yii2 基于 layui 的 Excel 上传并导入数据(含分页)

    安装命令 composer require phpoffice phpexcel 引入layui包 我这里用的是2 4 5的版本 请自行下载对应版本 layui前台页面 导入文件 卡号信息 layui use form element up