layui php+PHPExcel 拉取excel表格数据一键导入

2023-11-18

需求:大量数据需要导入数据库,直接拉取excel表格进行读取数据并存入数据库,过程中不对文件进行存储(使用上传过程中的缓存文件)。

前端代码(layui+php):

<?php
	if(!defined('MEMCACHE_HOST'))
	{
		define('MEMCACHE_HOST','1****5');
		define('MEMCACHE_PORT',1***2);
	}
	include_once('/opt*******memcache.php');
	$cpage	= 'add_uploads';
	$ask***_str	= M::Get('as***list');
	$ask_***_arr	= json_decode($ask_a***r,true);//获取客户名列表,存在缓存中
?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<title>问答频道后台</title>
	<link rel="stylesheet" rev="stylesheet" href="http://www.qubaobei.com/badmin/city/style/style.css?v=4" type="text/css" />
	<link rel="stylesheet" href="//www.qubaobei.com/kadmin/zlmm/static/admin/lib/layui/css/layui.css" id="layui">
	<style type="text/css">
	a:visited {
		color: #fff;
		text-decoration: none;
	}
	a:link {
		color: #fff;
		text-decoration: none;
	}
	</style>
</head>
<body>
<?php include_once('global/nav.php');?>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
  <legend>客户批量问题一键导入</legend>
</fieldset> 
<form class="layui-form" action="">
	<div class="layui-form-item">
		<label class="layui-form-label">类型</label>
		<div class="layui-input-inline" style="width: 115px">
			<input type="checkbox" name="base" lay-skin="switch" lay-filter="base" lay-text="新增|选择">
		</div>
		<div id="base" style="display: none;">
			<div class="layui-input-inline" style="width: 100px">
				<input type="text" id="new_ad" name="new_ad" style="width: 100px" class="layui-input" value="" placeholder="客户名">
			</div>
		</div>
		<div class="layui-input-inline" style="padding: 9px 15px;line-height: 20px;">
			<a class="layui-btn layui-btn-xs"  href="./document/template.xlsx" download="">导入数据表格模板下载</a>
		</div>
	</div>
	<div class="layui-form-item" id="base_1">
		<label class="layui-form-label">客户名</label>
		<div class="layui-input-block" style="width: 700px">
		<?php foreach($ask_adv_post_cat_arr as $v):?>
			<input type="radio" lay-filter="ad_id" name="cate" value="<?php echo $v['cat_id'];?>" title="<?php echo $v['new_ad'];?>">
		<?php endforeach;?>
		</div>
	</div>
	<div class="layui-form-item">
		<label class="layui-form-label">文件上传</label>
		<div class="layui-upload-drag" id="test10">
		  <i class="layui-icon"></i>
		  <p>点击上传,或将文件拖拽到此处</p>
		</div>
	</div>
</form>
<!-- 上传完之后服务器返回链接 -->
<div style="overflow-y:auto; overflow-x:auto;  width:450px; height:600px; position: fixed;right: 30px;top: 100px;">
<table class="layui-table">
  <colgroup>
    <col width="200"><col>
  </colgroup>
  <thead>
    <tr>
      <th>链接</th>
    </tr> 
  </thead>
  <tbody id="url_list">

  </tbody>
</table>
</div>
</body>

<script src="//www.qubaobei.com/kadmin/zlmm/static/admin/lib/layui/layui.js"></script>
<script>

  layui.use(['upload','jquery','form'], function () {
    var $ = layui.jquery,
		form  = layui.form,
		upload = layui.upload;

	var cat_id=0,new_ad='';
    //监听开关操作
	form.on('switch(base)', function(data){
		var obj    = $(data.elem);
		var change = this.checked
		if(change){
			$('#base').show();
			$('#base_1').hide();
			$('#new_ad').val('');
			new_ad = '';
		}else{
			$('#base').hide();
			$('#base_1').show();
			$('#new_ad').val('');
			new_ad = '';
		}
	});
    //由于不使用表单提交,监听单选项值
	form.on('radio(ad_id)', function(data){
		cat_id = data.value;
	}); 
	//获取新增客户名
	$('#new_ad').blur(function(){
		new_ad = $('#new_ad').val();

	});
	//拖拽上传(不可以直接使用默认data形式!!由于是reder在一开始就确定了data值,所以需要在befor中重定义data。)
	upload.render({
		elem: '#test10'
		,url: 'sub/ask_adv.php'
		,accept: 'file' //普通文件
		,before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
			this.data = {
						  method: 'one_button_import',
						  cat_id:cat_id,
						  new_ad:new_ad
						}
		}
		,done: function(res){
			if(res.ret==1){
				var i = layer.msg(res.msg,{time: 500},function(){ layer.close(i);});
				res.data.forEach(function(v){  
					var str="<tr><td>"+v[1]+"</td></tr>";
					$("#url_list").append(str);
				});
			}else{
				var index = layer.alert(res.msg,{icon:2},function(){ layer.close(index);});
			}

		}
	});
});
</script>

服务端代码:

//导入PHPExcel类文件(git:https://github.com/PHPOffice/PHPExcel,压缩文件:https://codeload.github.com/PHPOffice/PHPExcel/zip/1.8)

include_once("../util/PHPExcel/Classes/PHPExcel/IOFactory.php");
include_once("../util/PHPExcel/Classes/PHPExcel.php");


	//自动化一键导入
	public function one_button_import(){
		$file	= $_FILES['file'];//获取上传的文件
		$cate	= isset($this->get['cat_id'])?$this->get['cat_id']:0;//获取额外的数据
		$new_ad	= isset($this->get['new_ad'])?$this->get['new_ad']:'';
		if(!$cate && !$new_ad){
			$data['ret']=0;
			$data['msg']='未选择分类或未新增';
			echo json_encode($data);die;

		}
        //新增客户选项
		if(!$cate && $new_ad){
            //查找库中目前最大客户id值
			$sql	= "select max(cat) as max_cat from `ask_post` where `state`=1 limit 1";
			$max_cat= $this->ms->getRow($sql);
			$cate	= (int)$max_cat['max_cat']+1;
			//保存分类到缓存
			$ask_adv_post_cat_str	= M::Get('ask****_list');
			$ask_adv_post_cat_arr	= json_decode($ask_adv_post_cat_str,true);
			$new_quit	= array('cat_id'=>$cate,'new_ad'=>$new_ad);
			$ask_adv_post_cat_arr[]	= $new_quit;
			//$ask_adv_post_cat_arr	= array(array('cat_id'=>9999,'new_ad'=>'伊***品线'));
			$str = json_encode($ask_adv_post_cat_arr);
			M::Set('ask_****_list',$str);
			//文件记录,以防缓存丢失
			$log_str = '=========='.date('Y-m-d H:i:s').'=========='.PHP_EOL.var_export($ask_adv_post_cat_arr,true).PHP_EOL;
			file_put_contents('/o*******/log/ask_ad_cat_post.txt',$log_str,FILE_APPEND);
		}
        //使用缓存文件
		$inputFileName = $file['tmp_name'];
		//读取excel文件
		try {
			$inputFileType	= PHPExcel_IOFactory::identify($inputFileName);
			$objReader		= PHPExcel_IOFactory::createReader($inputFileType);
			$objPHPExcel	= $objReader->load($inputFileName);
		} catch(Exception $e) {
			die('加载文件发生错误:”'.pathinfo($inputFileName,PATHINFO_BASENAME).'”: '.$e->getMessage());
		}
        //形成数组
		$excel_data = $objPHPExcel->getSheet(0)->toArray();
		$url_list = array();
		foreach($excel_data as $k=>$v){
			if($k>0){
				//入库
				$post_id = $this->add_advice_post($v[0],$v[1],1,$cate);
				if($post_id){
					$url_list[] = array($v[0],"http:********e/detail.php?id=".$post_id);
				}else{
					die;
				}
			}
		}
		if($url_list){
			$data['ret']=1;
			$data['msg']='导入成功';
			$data['data']=$url_list;
		}else{
			$data['ret']=1;
			$data['msg']='导入失败,联系程序员';
		}
		echo json_encode($data);die;
	}

 

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

layui php+PHPExcel 拉取excel表格数据一键导入 的相关文章

  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • 使用 GD lib 过滤器标准化 CSS 过滤器

    我想让用户拖动范围滑块并通过实时预览 CSS 滤镜 调整图像的亮度和对比度 然后使用 GD 库保存调整 但是 我似乎无法从 CSS 过滤器和 GD lib 亮度和对比度过滤器获得相同的结果 我的 CSS 过滤器范围为 50 150 其中 1
  • 如何用php检测浏览器是否是firefox? [复制]

    这个问题在这里已经有答案了 可能的重复 有没有php代码可以检测浏览器的版本和操作系统 https stackoverflow com questions 2142030 any php code to detect the browser
  • 从 Yii2 中的联结表检索数据

    我试图从 Yii2 中的连接表获取数据无需额外查询 我有 2 个模型 用户 组 通过连接表 user group 关联 在 user group 表中 我想存储此关系的额外数据 管理标志 将数据添加到连接表的最佳方法是什么 link 方法接
  • 如何在php中正确显示另一种语言的mysql表数据

    我有一个 mySQL 表 其中一列中的数据采用英语以外的语言 波斯语 当我在表中输入数据时 它会正确显示 但是当我想在 php 文件中显示数据时 它会显示如下 好吧 我应该怎么做才能以正确的形式显示数据 由于我经常使用 非英语 字符 因此要
  • 如何获取 $node 内的 html 而不仅仅是 $nodeValue [重复]

    这个问题在这里已经有答案了 目前情况描述 我有一个装满页面的文件夹 页面文件夹 该文件夹内的每个页面 除其他外 都有一个 div id short info 我有一个代码可以提取所有 div div 从该文件夹中并使用显示其中的文本text
  • Laravel 转义 Blade 模板中的所有 HTML

    我正在 Laravel 中构建一个小型 CMS 并尝试显示内容 存储在数据库中 它显示 HTML 标签而不是执行它们 就像所有打印数据都有一个自动 html entity decode 一样
  • 在 php 中将单词转换为数字 II

    这里有一个很棒的功能在 PHP 中将单词转换为数字 https stackoverflow com questions 1077600 converting words to numbers in php来自埃尔约博 但我有一个问题 字符串
  • 通过 PHP 检测 excel .xlsx 文件 mimetype

    我无法通过 PHP 检测 xlsx Excel 文件的 mimetype 因为它是 zip 存档 文件实用程序 file file xlsx file xlsx Zip archive data at least v2 0 to extra
  • Symfony 3新建项目报错

    我开始编写有关 Symfony 3 的教程 在使用以下命令创建新项目时遇到问题 php symfony phar new Symfony 我有这个错误 GuzzleHttp Exception RequestException Error
  • Woocommerce 获取产品

    我使用以下代码从我的 WordPress 网站中的 WooCommerce 获取产品类别列表
  • 将错误保存到 MySQL 数据库

    我有一个 php 查询来更新 MySQL 数据库 请参见下文 sql update hr payroll set payroll number payroll number tax code tax bacs ref bacs ref pa
  • setImageCompressionQuality 与 setCompressionQuality 之间有什么区别 - Imagick

    我在Imagick中找到了两种设置图像压缩质量的方法 A 设置图像压缩质量 B 设置压缩质量 所以我想知道哪一个是最好的以及为什么在以下条件下 我读到了setCompressionQuality方法仅适用于新图像 我正在尝试压缩文件 jpe
  • 在 PHP 中添加分数会产生不同的结果[重复]

    这个问题在这里已经有答案了 可能的重复 PHP float 到 int 类型转换的意外结果 https stackoverflow com questions 3385685 php unexpected result of float t
  • 将 Node.js(用于实时通知)添加到现有 PHP 应用程序

    我有一个现有的 PHP 应用程序 我需要向其中添加实时通知 为了实现这一点 我安装了node js 打算添加socket io以实现所有实时功能 然而 尽管在过去的三个小时里研究并试图弄清楚如何将两者结合起来 但我发现自己并没有更接近于获得
  • 给定两个日期,在 PHP 中查找工作日数的最佳方法是什么?

    标题几乎是不言自明的 给定两个日期 使用 PHP 查找工作日数的最佳方法是什么 工作日为周一至周五 例如 我如何知道中间有 10 个工作日31 08 2008 and 13 09 2008 datefrom strtotime datefr
  • 在 JQuery ui 自动完成中显示图像

    我有一个带有 JQuery ui 自动完成功能的脚本 可以完美运行 有一个显示用户名字和姓氏的搜索过程 但在我的数据库中 还有用户的图片 我想将其显示在带有名字和姓氏的建议中 数据库中pic包含图片url 剧本 function searc
  • 如何将 JSON 数据从 Android 发送到 php url?

    我想将登录信息从我的应用程序发送到 php url 因为这我的应用程序将崩溃 任何人都可以帮助我解决这个问题 这是我的服务器登录方法 我想将数据发送到此登录方法 Method public method login Parameters 3
  • 我应该在 PHP 代码中使用断言吗?

    一位同事添加了assert http php net assert在我们的库中 在我本来会使用 if 语句并引发异常的地方执行几次命令 在此之前我什至从未听说过断言 以下是他如何使用它的示例 assert isset this gt rec
  • 使用 Apache 允许 Glassfish 和 PHP 在同一服务器中协同工作

    是否可以建立从 Java 到 php 文件的桥梁 我有一个用 Java 编写的应用程序 我需要执行http piwik org http piwik org 这是用 PHP 编写的 在服务器中 我正在运行 PHP 但无法从浏览器访问 php

随机推荐

  • osgEarth的Rex引擎原理分析(一一六)地理数据坐标系分类

    目标 一一五 中的问题203 地理数据的坐标系一般有两大类 一是地理坐标系 GCS 是经纬度单位的椭球坐标系 二是投影坐标系 PCS 是平面直角坐标系 投影坐标系 PCS 的定义一般会包含两方面的定义信息 1 基准面 Datum 与GCS相
  • 各种系统框架图简介(转载)

    原文出处 http space itpub net 6517 viewspace 609654 1 Spring 架构图 Spring 是一个开源 框架 是为了解决企业 应用程序开发复杂性而创建的 框架的主要优势之一就是其分层架构 分层架构
  • dubbo整合nacos没有注册成功

    这里大家整合的时候一定要注意dubbo3 0的版本 nacos整合的话要是2 0以上的版本 不然就会出现服务注册不上的情况 下面是nacos的下载地址 推荐大家使用这一个 还是比较主流的 Nacos 快速开始
  • 红帽6虚拟机安装流程

    红帽虚拟机的安装流程 redhat6 本篇文章将会带大家完整的安装linux红帽虚拟机 傻瓜式配置红帽虚拟机 超详细安装流程 1 下载好所需要的镜像文件 并且放在一个固定的文件夹中 如果没有iso文件 评论一下 发给你 2 打开虚拟机创建新
  • Typora软件的安装以及Typora中相应主题的拷贝和安装(网页下载到安装目录,安装Typora必看)

    1 首先 进入Typora官方中文网站 Typora官方中文网站 https typoraio cn 2 下载相应版本的Typora软件 直接进行安装即可 3 进入Typora软件 打开 主题 可以看到基本的主题 4 下载更多好看的Typo
  • MongoDB的安装与基本使用

    首先 得从MongoDB官网下载到对应操作系统的数据库安装包 MongoDB官网 https www mongodb com MongoDB下载地址 https www mongodb com download center communi
  • python中idx函数_python 常用函数、内置函数清单

    文章内容摘自 http www cnblogs com vamei 1 type 查询变量的类型 例 gt gt gt a 10 gt gt gt print a 10 gt gt gt print type a 2 dir 查询一个类或者
  • maven本地仓库配置

    来配置一下maven本地仓库 第一步 下载到官网下载maven包 下载地址 http maven apache org download cgi 第二步 找个盘符创建个文件夹将将下载的maven报放进去 然后将下载的包解压了 第三步 配置M
  • 树莓派3B+使用镜像烧录安装系统与配置教程(入门向)

    设备 Raspberry 3B 开发板一块 显示屏 台式计算机或笔记本电脑 显示屏 HDMI转VGA线或HDMI线或USB视频采集卡 千万不要用HDMI线从树莓派直接连接到显卡的HDMI口或者笔记本的HDMI口 轻则平安无事 重则电脑CPU
  • React移动端项目-02

    一些不实装功能的静态页面 底部导航栏 问答 页面 目标 实现问答页面的静态结构和样式 操作步骤 将资源包的样式拷贝到 pages Question 目录下 然后在该目录下的 index js中编写组件代码 import NavBar fro
  • UVA 1601 The Morning after Halloween - Japan 2007

    include
  • 创建任意程序为系统服务

    网上流传的创建系统服务的方法我看着真麻烦 把我自己弄的很简单的代码共享下 create SERVICENAME bat ECHO OFF sc delete SERVICENAME sc create SERVICENAME start a
  • 51单片机按键识别与LED显示(显示0-9的数字)

    实验内容 单片机外接10个按键 编号为0 9 编程实现任意按键则LED显示对应数字 一 硬件电路原理图 1 共阴共阳两种不同的方式 2 数码管显示表 3 矩阵键盘介绍 矩阵键盘是 单片机 外部设备中所使用的排布类似于矩阵的键盘组 矩阵式结构
  • WIN10+VS2013+CUDA10安装方法

    1 先安装VS 先安装VS 先安装VS 安装CUDA会配置VS文件 反向的话VS中找不到文件 VS安装参考 https blog csdn net m0 37477061 article details 83447773 2 安装CUDA
  • E-R模型应用示例

    E R模型应用示例 例1 1 设有某计算机系统集成制造公司需要建立一个零配件物资管理系统 该公司组装不同型号计算机所用的零配件由不同供货商供给 存放在多个仓库中 由多名仓库管理员管理 试用E R模型对该公司的零配件管理工作进行分析 根据该公
  • STM32移植lwip之官方源码解析

    本篇目标 分析stm32的ETH MAC控制器 初始化及lwip是如何与stm32底层连接的 材料准备 官方资料 包含代码和移植手册 stm32官方移植lwip资料 修改代码 包含移植后的代码 STM32官方移植lwip修改代码 修改参考
  • C++智能指针:shared_ptr用法详解

    C 智能指针 shared ptr用法详解 shared ptr是C 11里的新特性 其包装了new操作符在堆上分配的动态对象 如 shared ptr
  • MATLAB自动生成标记点

    在测试算法准确性的过程中 需要在图像上生成一些大小已知的标记点来识别 同时又需要生成的标记点位置随机 以测试算法的适用性 本人搜索自动生成标记点没有找到相关内容 因此将完成思路整理如下 随机生成点位置 MATLAB生成随机点很容易实现 使用
  • 解决django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is required; you have 1.0.

    最近在配置环境时遇到这样的问题 在网上查找了很多资料 比如注释base py中的代码 又或是添加如下代码 这些方法对我来说都不管用 后面又查到说可以降低django的版本 随后我重新安装了django2的版本 然后报以下错误 TypeErr
  • layui php+PHPExcel 拉取excel表格数据一键导入

    需求 大量数据需要导入数据库 直接拉取excel表格进行读取数据并存入数据库 过程中不对文件进行存储 使用上传过程中的缓存文件 前端代码 layui php