PHP实用工具:实现Excel转Mysql工具自动字段长度

所得Mysql语句一般适合查立得万能搜等mysql只查不改的系统。 

<?php
$t = "Excel转Mysql工具";
$s = "Excel复制过来的二维结构表内容,第一行各列字段名(列标题),以后一行一条数据";
$yw = "chalide".date("YmdH");
$datedir = "";
function txttihuan($stext){
$stext = str_replace(array("\r\n","\r","\n"),"<br />",$stext);
$stext = str_replace(array("\t"),"<br />",$stext);
return addslashes($stext);//htmlspecialchars($stext);
}
function ss($Key){$html="<script>\r\n";$html.="alert('".$Key."');\r\n";$html.="history.go(-1);\r\n";$html.="</script>";exit($html);
}
$base = trim($_POST['name']);
if (strlen($base)>10){
$files="S2".date("YmdHis");
$uptis = "上传失败:";
if(!stristr($base,"\t"))$uptis .= "制表符;<br>";
if(!stristr($base,"\n"))$uptis .= "回车符;<br>";
if($uptis<>"上传失败:") ss("提交内容由Excel复制过来:应当包含:".$uptis);
file_put_contents($datedir.$files.".csv", $base);$file = fopen($datedir.$files.".csv", 'r');
$header = fgetcsv($file);
$max_lengths = array_fill(0, count($header), 12);
while (($line = fgetcsv($file,0,"\t")) !== false) {foreach ($line as $i => $value) {$max_lengths[$i] = max($max_lengths[$i], strlen($value));}
}
fclose($file);$file = fopen($datedir.$files.".csv",'r') or ss("读取失败:读取上传文件内容失败!"); $ii=-1; $ix1="|"; $ix0=0;
$xs1tao ="
-- -公共说明:本功能适合查立得php+mysql无后台查询!
-- -公共说明:你需要修改表名称`$yw`为实际(多处)!
";$xs2tao ="
-- -建表结构说明:ID字段自动增加,请确保其他字段都不是ID,其他字段均为文本!
-- -字段长度说明:varchar(*)中*号自动为csv各列最高长度 请根据自己实际修改(中文得乘3)以免只写入部分值
-- -可选性能提升:请根据实际修改索引字段INDEX(),UNIQUE KEY(),FULLTEXT()等
-- -其他:数据库引擎InnoDB/Myisam 编码等
";$px ="-- -如果表已存在则先清空表,不需要则删除忽略!\r\n";
$px .= "DROP TABLE IF EXISTS `".$yw."`;\r\n\r\n";while ($data = fgetcsv($file,0,"\t")){$ii++; $io=0;$pt = "-- -以下是写入新数据Sql;\r\n";$pt .= "INSERT INTO `$yw` (";$pa = "-- -以下是建表Sql;建表用\r\n";$pa .= "CREATE TABLE `$yw` (\r\n";$pa .= "`id` int(10) unsigned NOT NULL AUTO_INCREMENT,\r\n";if($ii."a"=="0a"){$dd=array(); $par="\r\n-- - 如需索引自定义修改以下内容后加在PRIMARY KEY (`id`)前\r\n";foreach($data as $keyy=>$valy) { $io++; $valy = txttihuan($valy); $dd[$io]=$valy; $ilen = $max_lengths[$keyy];$pa .= "`$valy` varchar($ilen) COMMENT '$valy' DEFAULT 'Null',\r\n";if($io."a"=="1a"){ $pt .= "`$valy`"; }else{ $pt .= ", `$valy`"; }}
if($dd[1]) $par .= "-- -普通索引参考: INDEX ".$dd[1]." (`".$dd[1]."`),\r\n";
if($dd[1]) $par .= "-- -全文索引参考: FULLTEXT (`".$dd[1]."`),\r\n";
if($dd[2]) $par .= "-- -唯一索引参考: UNIQUE KEY `".$dd[2]."` (`".$dd[2]."`),\r\n";$pa .= "PRIMARY KEY (`id`)\r\n";$pa .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8;";$pt .= ") VALUES ";$lix = $io; $rst = "$xs1tao\r\n$px\r\n$pa\r\n$par\r\n\r\n$xs2tao\r\n$pt"; }else{foreach($data as $keyy=>$valy) { $io++;  $valy = txttihuan($valy);if($io."a"=="1a"){ $linex = "\r\n('$valy'";}else{$linex .= ", '$valy'"; }} if(!stristr("-{$lix}-","-{$io}-")){ $ix1.="$ii|"; $ix0++;}$rst .= "$linex),";}
}
$rst = Trim($rst,",").";";
if (@unlink($datedir.$files.".csv")){ }
if($ix0>0) $tips = "<br>可能有{$ix0}行单元格包含制表符或者回车换行,不正常($ix1)";
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title><?php echo $t; ?> - <?php echo $h; ?></title>
<meta name="author" content="yujianyue, admin@ewuyi.net">
<meta name="copyright" content="www.12391.net">
<script type="text/javascript">
function $(Obj){
return document.getElementById(Obj);
}
function Trim(Str){
return  Str.replace(/(^\s*)|(\s*$)/g,"");
}
function menuFix(){var sfEls=$("menu").getElementsByTagName("li");for (var index=0;index<sfEls.length;index++){sfEls[index].onmouseover=function(){this.className+=(this.className.length > 0 ? " " : "") + "sfhover";}sfEls[index].onmouseout=function(){this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),"");}}
}
function Pid(id,tag){if(!tag){return $(id);} else{return $(id).getElementsByTagName(tag);}
}
function tab_zzjs(id,hx,box,iClass,s,pr){var hxs=Pid(id,hx);var boxs=Pid(id,box);if(!iClass){ // 如果不指定class,则:boxsClass=boxs; // 直接使用box作为容器}else{var boxsClass = [];for(i=0;i<boxs.length;i++){if(boxs[i].className.match(/\btab\b/)){// 判断容器的class匹配boxsClass.push(boxs[i]);}}}if(!pr){ // 如果不指定预展开容器,则:go_to(0); // 默认展开序列yy();} else {go_to(pr);yy();}function yy(){for(var i=0;i<hxs.length;i++){hxs[i].temp=i;if(!s){// 如果不指定事件,则:s="onclick"; // onmouseoverhxs[i][s]=function(){go_to(this.temp);}} else{hxs[i][s]=function(){go_to(this.temp);}}}}function go_to(pr){for(var i=0;i<hxs.length;i++){if(!hxs[i].tmpClass){hxs[i].tmpClass=hxs[i].className+=" ";boxsClass[i].tmpClass=boxsClass[i].className+=" ";}if(pr==i){hxs[i].className+=" up"; // 展开状态:标题boxsClass[i].className+=" up"; // 展开状态:容器} else {hxs[i].className=hxs[i].tmpClass;boxsClass[i].className=boxsClass[i].tmpClass;}}}
}
</script>
<style type="text/css">
/*自定义css*/*{margin:0;padding:0;line-height:150%;}
body{font-family:"microsoft yahei",SimHei;background:#fff;font-size:14px;}
body{background:#fff;}
a{text-decoration:none;}
a:link{color:blue;}
a:visited{color:blue;}
a:hover,a:active{color:blue;}
b{color:red;font-weight:normal;}
.r{text-align:right;}
.l{text-align:left;}
.c{text-align:center;}
span{color:gray;}
.gray{color:gray;}
strong{color:red;}.w{ padding:30px;background-image:url(logo.png);background-position:bottom right;background-repeat:no-repeat;}
p{padding:5px;line-height:150%;}
p a:hover{padding:3px;color:green;}
h2{height:37px;line-height:36px;font-size:28px;padding:12px 0px;width:100%;color:blue;}
h3{font-size:14px;line-height:180%;margin:1px 2px;color:red;}
h4{font-size:14px;line-height:180%;font-weight:normal;margin:1px 2px;color:blue;}
.mabida {position:relative; }
.mabida .aiyaha { position: absolute; left: 0px; top: 20px; z-index:999;background-color:white; border:1px #006AA8 solid; display: none;}
.mabida .aiyaha img { width:138px; margin:12px; }
.mabida:hover .aiyaha { display: block;}
strong,b{color:red;margin:2px;line-height:130%;}
h5{font-size:14px;line-height:120%;font-weight:300;margin:1px 2px;color:blue;}
#tab02{position:relative;margin:0px;border:0px solid #ccc;} 
#tab02 h4 {line-height:150%;padding:5px 2px;font-size:16px;text-align:left;color:blue;} 
#tab02 h4 {cursor:pointer;border:solid #ccc;border-width:1px 0 0 0;} 
#tab02 h4.up {color:red;background:#f6f6f6;line-height:180%;padding:5px 2px;border-width:2px 0 0 0;font-weight:600;} 
#tab02 ol {display:none;border:0px solid #ccc;} 
#tab02 ol.up { display:block;padding:3px 0px; min-height:54px;} 
caption{padding:5px;margin:8px auto;margin-left:18px;}
table{border-top:2px solid #0180CF; margin:0 auto;font-size:12px;width:99%;}
table td{min-width:66px;border-bottom:1px solid #a2c6d3;padding:5px 0px;word-wrap:break-word;word-break:break-all;}
table tr:nth-child(even){background: #FCFCFC;}
.tt{background:#e5f2fa;line-height:18px;FONT-SIZE:12px;font-weight:600;}
.red{background:red;color:white;}
#header,#main,#footer{margin:0px auto;width:99%;min-width:888px;max-width:1188px;display:block;}
#header{background:#fff;height:38px;line-height:38px;border-bottom:2px solid #ccc;z-index:3;}
#header .logo{font-style:italic;padding:0 0 0 8px;font-size:12px;font-weight:300;color:green;}
#header .logo b{height:38px;line-height:38px;font-weight:900;font-size:20px;color:#0180CF;}
#menu{float:right;height:36px;line-height:36px;margin:0 auto;padding:0 8px 0 0;}
#menu ul{list-style:none;margin:0;padding:0;}
#menu ul li{float:left;margin-left:2px;}
#menu ul li a{display:block;border:1px solid white;padding:0 3px;min-width:88px;height:36px;line-height:36px;text-align:center;}
#menu ul li a:hover{border:1px solid #ccc;background:#0180CF;color:white;}
#menu ul li ul{background:white;z-index:5;display:none;top:37px;border:1px solid #ccc;position:absolute;}
#menu ul li ul li{float:none;background:#eee;margin:0;}
#menu ul li ul li a{background:white;border-bottom:1px solid #ccc;}
#menu ul li ul li a:hover{background:#0180CF;color:white;border-bottom:1px solid #ccc;}
#menu ul li:hover ul{display:block;}
#onebyone{margin:0px auto;width:99%;min-width:888px;max-width:1188px;display:block;}textarea{margin:0 auto;width:99.5%;height:300px;}
.select select{width:100%;padding:5px;border:1px #CACACA solid;height:40px;-webkit-appearance:none;}
.select option{height:40px;}
.select{margin:0 auto;width:92%;height:40px;overflow:hidden;}
.so_but{margin:15px auto;width:92%;text-align:center;margin-top:12px;border:0px;}
.so_bus{margin:15px auto;width:92%;text-align:left;margin-top:12px;border:0px;}
.so_but .buts{line-height:200%;padding:5px 25px;background:#0180CF url(line_bg.jpg) repeat-x;border-radius:25px;color:white;border:0px;}
fieldset{margin:5px auto;border:0;border-top:1px solid #ccc;list-style-type:none;table-layout:fixed;white-space: normal;word-break:break-all; }
.w{width:100%;padding:0; }
legend{margin:0px 18px;padding:0px;text-align:center;font-size:20px;color:green;font-weight:600;text-overflow:ellipsis;white-space:nowrap;}
fieldset {word-wrap:break-word;}
.none {border:1px solid green;text-align:center;}
#fooder{display:none;}
#footer{text-align:center;margin-top:0px;padding-top:5px;border-top:1px solid #ccc;}
</style>
</head>
<body>
<div id="main">
<div id='onebyone'>
<!-- table!sta -->
<div id="md">
<fieldset class="w">
<legend><?php echo $t; ?>(<b><?php echo $h; ?></b>)功能内测中</legend>
<div id="tab02">
<?php if(strlen($rst)>1){?>
<h4> 转化结果 </h4>
<ol>
<?php echo $tips; ?>
<div class="so_bax" id="t2">
<textarea name="name" class="txts" id="name" placeholder="转化后内容" onfocus="st('name',2);" onBlur="sta(2)" >
<?php echo $rst; ?>
</textarea>
<b>继续转化</b>请点下边一行。<br>
</div>
</ol>
<?php } ?>    
<h4> xls转Mysql </h4>
<ol>
<form name="queryForm" method="post" action="?t=<?php echo date("YmdHis");?>" onsubmit="return sta(0);">
<div class="so_bax" id="t2">
<textarea name="name" class="txts" id="name" placeholder="<?php echo $s; ?>" onfocus="st('name',2);" onBlur="sta(2)" ><?php echo $s; ?></textarea>
</div>
<div class="so_but">
<input type="submit" name="button" class="buts" id="sub" value="立即转化" />
</div>
<div id="tishi2" style="display:none;">Excel复制过来的二维结构表内容</div>
</form> </ol><h4> 功能说明</h4>
<ol>
将Excel表格二维结构部分内容转为Mysql数据(去回车换行及制表符)。
</ol><h4> 使用须知</h4>
<ol>
1. 二维表:第一行列标题,以后一行一条数据。<br>
2. 无合并单元格:即每行一条数据,第一行每个字段(每格)对应列。<br>
3. 主动字段长度但均为文本格式,一般适合查立得万能搜等只查不改系统。<br>
</ol></div><script type="text/javascript"> 
<!-- 
tab_zzjs("tab02","h4","ol");
//--> 
</script> 
</fieldset></div>
<!-- table!old -->
</div>
<div id='fooder' class="linkar">
</div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多关键字dp,P1687 机器人小Q

P1687 机器人小Q - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 成功派送完这个大单后&#xff0c;餐厅决定引入一名新成员&#xff1a;机器人小 Q。小 Q 的到来让餐厅的客源增加了不少&#xff0c;但是&#xff0c;一段时间之后&#xff0c;新的问题又出现了&…

【c++随笔12】继承

【c随笔12】继承 一、继承1、继承的概念2、3种继承方式3、父类和子类对象赋值转换4、继承中的作用域——隐藏5、继承与友元6、继承与静态成员 二、继承和子类默认成员函数1、子类构造函数 二、子类拷贝构造函数3、子类的赋值重载4、子类析构函数 三、单继承、多继承、菱形继承1…

设计模式-工厂方法

工厂方法是一种创建型设计模式&#xff0c;其在父类中提供一个创建对象的方法&#xff0c;允许子类决定实例化对象的类型。 问题 假设你开设了一个汽车工厂。创业初期工厂只能生产宝马这一款车&#xff0c;因此大部分代码都位于名为宝马的类中。 工厂效益非常好&#xff0c;为…

IDEA搭建ssm项目

此前&#xff0c;我一直在用eclipse编辑器做java项目&#xff0c;现在初次使用IDEA编辑器&#xff0c;在这里&#xff0c;我记录了使用IDEA环境下搭建ssm项目的过程。 创建Maven项目&#xff0c;如下 右击TEST4项目&#xff0c;在弹出的菜单中选择Add Framework Support 在弹出…

屏幕提词软件Presentation Prompter mac中文版使用方法

Presentation Prompter for mac是一款屏幕提词器软件&#xff0c;它可以将您的Mac电脑快速变成提词器&#xff0c;支持编写或导入&#xff0c;可以在一个或多个屏幕上平滑地滚动&#xff0c;Presentation Prompter 下载是为适用于现场表演者&#xff0c;新闻广播员&#xff0c;…

计算机网络——b站王道考研笔记

第一章 计算机网络体系结构 1.计算机网络概述 &#xff08;1&#xff09;概念 计算机网络是一个将分散的&#xff0c;具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统&#xff1b; 是互连的&#…

数据分析面试题1

1.右表为一组数据&#xff0c;尝试进行简单分析&#xff0c;并给出结论&#xff08;使用公式和图表辅助&#xff09; ①理解数据 userid&#xff1a;用户id神兽印记消耗数量 ②数据清洗 冻结首行&#xff0c;将列标题的英文字段转换成汉字字段检查是否有重复项&#xff1a;…

Leetcode—20.有效的括号【简单】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—20.有效的括号 C实现代码 class Solution { public:bool isValid(string s) {stack<char> arr;int len s.size();if(len 1) {return false;}for(int i 0; i < len; i) {if(s[i] ( || s[i] [ || s[i] {)…

基于springboot实现沁园健身房预约管理系统【项目源码】计算机毕业设计

基于springboot实现沁园健身房预约管理系统演示 B/S架构 B/S结构是目前使用最多的结构模式&#xff0c;它可以使得系统的开发更加的简单&#xff0c;好操作&#xff0c;而且还可以对其进行维护。使用该结构时只需要在计算机中安装数据库&#xff0c;和一些很常用的浏览器就可以…

Flink

1. Flink简介 1.1 初识Flink Flink项目的理念是&#xff1a;“Apache Flink是为分布式、高性能、随时可用以及准确的流处理应用程序打造的开源的有状态的流处理框架”。 Apache Flink是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行有状态计算。Fl…

进亦忧,退亦忧,Github Copilot 集成进入 Visual Studio 带来的思考

开篇想到《岳阳楼记》的结尾&#xff1a; 不以物喜&#xff0c;不以己悲&#xff1b;居庙堂之高则忧其民&#xff1b;处江湖之远则忧其君。是进亦忧&#xff0c;退亦忧。然则何时而乐耶&#xff1f;其必曰&#xff1a;“先天下之忧而忧&#xff0c;后天下之乐而乐”乎。未来30…

HarmonyOS 高级特性

引言 本章将探讨 HarmonyOS 的高级特性&#xff0c;包括分布式能力、安全机制和性能优化。这些特性可以帮助你构建更强大、更安全、更高效的应用。 目录 HarmonyOS 的分布式能力HarmonyOS 的安全机制HarmonyOS 的性能优化总结 1. HarmonyOS 的分布式能力 HarmonyOS 的分布…

Python 使用tkinter复刻Windows记事本UI和菜单功能(一)

下一篇&#xff1a;Python 使用tkinter复刻Windows记事本UI和菜单&#xff08;二&#xff09;-CSDN博客 介绍&#xff1a; Windows操作系统中自带了一款记事本应用程序&#xff0c;通常用于记录文字信息&#xff0c;具有简单文本编辑功能。Windows的记事本可以新建、打开、保…

html菜单的基本制作

前面写过一点网页菜单的博文&#xff1b;下面再复习一些技术要点&#xff1b; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.…

Python---元组的相关操作方法

由于元组中的数据不允许直接修改&#xff0c;所以其操作方法大部分为查询方法。 编号函数作用1元组[索引]根据索引下标查找元素2index()查找某个数据&#xff0c;如果数据存在返回对应的下标&#xff0c;否则报错&#xff0c;语法和列表、字符串的index方法相同3count()统计某…

基于GPTs个性化定制SCI论文专业翻译器

1. 什么是GPTs GPTs是OpenAI在2023年11月6日开发者大会上发布的重要功能更新&#xff0c;允许用户根据特定需求定制自己的ChatGPT模型。 Introducing GPTs 官方介绍页面https://openai.com/blog/introducing-gpts 在原有自定义ChatGPT的流程中&#xff0c;首先需要自己编制p…

SOME/IP 协议介绍(四)RPC协议规范

RPC协议规范 本章描述了SOME/IP的RPC协议。 传输协议绑定 为了传输不同传输协议的SOME/IP消息&#xff0c;可以使用多种传输协议。SOME/IP目前支持UDP和TCP。它们的绑定在以下章节中进行了解释&#xff0c;而第[SIP_RPC_450页&#xff0c;第36页]节讨论了选择哪种传输协议。…

消息中心常见解决方案分享

解决方案 1、问题2、设计3、流程 看了大部分的消息中心解决方案&#xff0c;发现大家的中心思想都大差不差&#xff0c;区别基本都是在符合自身业务场景的做了一些定制化处理。本文为我对消息中心基本骨架的知识梳理&#xff0c;亦在帮助大家对消息中心设计有一个基本的理解。 …

每日随机一题ctf——web-FlatScience【攻防世界】

文章目录 前言 前言 涉及内容&#xff1a; 使用御剑进行目录扫描 代码审计审计出一个sql注入的点 sql注入 爬取所有文档 提升点&#xff1a; 模仿御剑自己编写一个扫描器 通过网上的资源去学习代码审计 通过网上的资源去学习sql注入 通过网上的资源去学习爬虫技术&#xff08…

Spring 常见面试题

1、Spring概述 1.1、Spring是什么? Spring是一个轻量级Java开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题Spring最根本的使命是解决企业级应用开发的复杂性&#xff0c;即简化Java开发。这些功能的底层都依赖于它的两个核心特性&#xff0c;也就是…