H5读取excel⽣成txt⽂档
经常遇见问题去搜索博客,但是不到想要的内容,就是没有效果图,我想以后写博客都将效果先展⽰出来,然后在贴代码。
最近需要将excel中的数据读出来然后插⼊数据库,如果我⼀条⼀条写肯定不⾏,效率太慢,所以写了⼀个H5的读取excel的⼯具动态的读取excel的内容,然后将内容⽣成sql。
我⽤的HBuild开发的
效果图:
1.项⽬代码结构
2.table.html-》右键-》打开⽂件所在⽬录
3.右键-》打开⽅式-》ie浏览器打开
5.点击选择⽂件,我这边选择的⼀个例⼦excel⽂档。
7.选择之后,会提⽰
选择是。
8.选择之后就会⽣成⼀个txt,在d盘的⽬录下
<⽂件内容如下:
到此,我们的效果展⽰完毕。
代码问题:
⽣成的txt⽂件名字不对,代码中可以修改。
代码只能限制在ie浏览器运⾏。
代码:
1.代码我分享到我的⽹盘⾥⾯了。解压之后打开就⾏。
2.代码说明:
table.html代码中我写了注释,不懂得看下注释,或者在下⾯留⾔。
<!DOCTYPE html>
<!--suppress ALL -->
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<title>BootStrap Table使⽤</title>
<!--Jquery组件引⽤-->
<script src="js/jquery-1.10.2.min.js"></script>
<script src="js/shim.js"></script>
<script src="js/xlsx.full.min.js"></script>
<!--bootstrap组件引⽤-->
<link href="bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<script src="bootstrap/js/bootstrap.min.js"></script>
<!--bootstrap-editable组件以及中⽂包的引⽤-->
<link href="bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet" />
<script src="bootstrap3-editable/js/bootstrap-editable.min.js"></script>
<!--bootstrap table组件以及中⽂包的引⽤-->
<link href="bootstarp-table/css/bootstrap-table.min.css" rel="stylesheet" />
<script src="bootstarp-table/js/bootstrap-table.js"></script>
<script src="bootstarp-table/js/bootstrap-table-editable.js"></script>
<script src="bootstarp-table/js/bootstrap-table-zh-CN.min.js"></script>
<script src="js/utils.js"></script>
</head>
<body>
<div class="panel-body" >
<div class="panel panel-default">
<!--<div class="panel-heading">选择⽂件</div>-->
<div class="panel-body">
<div class="nav-bar">
<div class="btn-toolbar" role="toolbar">
<div class="input-group" onclick="$('#FileInput')[0].click()">
<span class="input-group-btn">
<button class="btn btn-info" type="button" ><i class="glyphicon glyphicon-folder-open"></i>选择⽂件</button> </span>
<input type="text" class="form-control" placeholder="请选择⽂件" readonly="readonly" id="excelfile">
</div>
</div>
</div>
</div>
</div>
<input type="file" id="FileInput" hidden="hidden" onchange="importfile(this)" />
</div>
</body>
<script>
function importfile(file) { //导⼊
var f = file.files[0];
$("#excelfile").val(f.name);
var wb; //读取完成的数据
/
/是否将⽂件读取为⼆进制字符串
var rABS = false;
var ie = IEVersion();
if(ie != -1 && ie != 'edge') {
if(ie < 10) {
return;
} else {
rABS = true;
}
}
if(checkfilename(file)) {
var reader = new FileReader();
var data = sult;
if(rABS) {
wb = ad(btoa(fixdata(data)), {
//⼿动转化
type: 'base64'
});
} else {
wb = ad(data, {
type: 'binary'
});
}
var result = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
resoveresult(result,f.name);
};
if(rABS) {
} else {
}
}
}
function resoveresult(list,excelname) {
if(list.length > 0) {
// 有多少⾏
var content = '';
for(var i = 0; i < list.length; i++) {
//每⼀⾏的每⼀列值
var rowContent = '';
//列表的键
var keyText = '';
//每⼀个数列的值
var valuesText = '';
for(var key in list[i]) {
if(list[i][key]!=null && list[i][key]!=""){打开excel很慢
keyText = keyText + ","+ key;
valuesText = valuesText +","+ "'"+ list[i][key] + "'";
}
}
//拼接为sql
rowContent = "INSERT INTO RT_MEASURESTAION_INFO ("+keyText.substring(1,keyText.length)+") VALUES("+valuesText.substring(1,valuesText.length)+" //添加回车符号
content +=rowContent + "\r";
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
if(!fso.FileExists("D:/"+excelname.substring(0,excelname.length-5)+".txt")) {
//在D盘创建txt⽂件
var f1 = atetextfile("D:/"+excelname.substring(0,excelname.length-5)+".txt", true);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论