JavaScript生成.xls文件的代码


Posted in Javascript onDecember 22, 2016

贴代码,一切尽在注释中

<html>
<head> 
<meta charset="utf-8"> 
</head> 
<body> 
<input type="button" value="下载设备模板" onclick="foo;" /> 
<script type="text/javascript" language="javascript"> 
var downloadTemplate = function 
{
/** * 根据所给数据创建并返回单行 tr节点 * data (必选), tag (可选, 标识创建的节点类型) **/
var getTr=function(data,tag)
{
var tr=document.createElement("tr"); for(var i=0;i<data.length;i++)
{ 
var item=document.createElement(tag||"td"); item.innerHTML=data[i]; tr.appendChild(item);
} 
return tr;
}
; /** * 根据所给数据创建并返回 table节点 * data (可选,无则返回空的table节点), head(可选, 标识是否存在表头) **/
var getTable=function(data,head)
{
var table=document.createElement("table");
var head=head||false; //存在表头设标识为th,否则为td
var tag=head?"th":"td"; //判断是一维||二维,执行不同逻辑
if(data[0] instanceof Array)
{ 
for(var i=0;i<data.length;i++)
{
//第一行数据根据tag创建节点类型 
(i==0)?table.appendChild(getTr(data[i],tag)):table.appendChild(getTr(data[i]));
}
}
else if(data instanceof Array)
table.appendChild(getTr(data,tag));
return table; 
}
; /** * table (必选, table节点) * uri 为生成excel的头部标签 * xmlns xml命名空间 * 返回xls资源 **/
var getXls=function(table)
{
var uri = 'data:application/vnd.ms-excel;base64,';
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" '+ 'xmlns:x="urn:schemas-microsoft-com:office:excel" '+ 'xmlns="http://www.w3.org/TR/REC-html40">'+ '<head>'+ '<!--[if gte mso 9]>'+ '<xml>'+ '<x:ExcelWorkbook>'+ '<x:ExcelWorksheets>'+ '<x:ExcelWorksheet>'+ '<x:WorksheetOptions>'+ '<x:DisplayGridlines/>'+ '</x:WorksheetOptions>'+ '</x:ExcelWorksheet>'+ '</x:ExcelWorksheets>'+ '</x:ExcelWorkbook>'+ '</xml>'+ '<![endif]-->'+ '</head>'+ '<body>'+ '<table>{table}</table>'+ '</body>'+ '</html>'; 
/** * 转码 base 64 * window.btoa能从ascii/二进制流中创建一个base64编码的字符串 * escape编码 unescape 解码字符串 * encodeURIComponent编码 DecodeURIComponent 解码字符串 **/ 
var base64 = function(s)
{ 
return window.btoa(unescape(encodeURIComponent(s))); 
};
//返回替换完具体数据的xls模板 var getXlsXml = function(template,data)
{
return template.replace(/{(\w+)}/g,data);
};
//返回资源链接
return uri+base64(getXlsXml(template, table.innerHTML));
};
/** * IE浏览器 * 使用Microsoft ActiveXObject组件生成xls ( 只兼容IE浏览器,选择允许加载组件 ) * table(必选, table节点) **/
var msDownload=function(data)
{
var xls = new ActiveXObject("Excel.Application"); 
xls.visible = true;
var xlsBook = xls.Workbooks.Add;
var xlsheet = xlsBook.Worksheets(1); 
for(var i=0;i<data.length;i++)
if(data[0] instanceof Array) 
for(var j=0;j<data[0].length;j++)
xlsheet.Cells(i+1,j+1).Value=data[i][j]; else xlsheet.Cells(1,i+1).Value=data[i]; //用完释放 xls=null; };
//参数: data(必选,一维||二维 数组), head(可选, 标识是否存在表头)
var download=function(data , head)
{ 
if(window.navigator.userAgent.indexOf("MSIE") >= 0)
msDownload(data);
else //下载(RestFul:资源下载置于超链接,地址为资源定位地址)
window.location.href =getXls(getTable(data,head));
}; 
return 
{ 
getXls:getXls, msDownload:msDownload, download:download
};
}; 
//测试数据 var od=['aid','pwd','设备名称','网关DK','区域'];
var td=[ ['aid','pwd','设备名称','网关DK','区域'], ['10086','root','松下R-399','208564165456542','2 #201'], ['10001','root','索尼SUV 09','456542895564165','2 #201'] ];
var foo=function
{ 
// new downloadTemplate.download(od,true); 
new downloadTemplate.download(td,true); 
}
; 
</script>
</body> 
</html>

测试结果:

在IE浏览器上需要允许加载ActiveX控件,之后在弹出的对话框中点击"是"

JavaScript生成.xls文件的代码

下载下来的表格如下:

JavaScript生成.xls文件的代码

chrome:

JavaScript生成.xls文件的代码

打开表格:

JavaScript生成.xls文件的代码

以上所述是小编给大家介绍的JavaScript生成.xls文件的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javscript对象原型的一些看法
Sep 19 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
Three.js源码阅读笔记(基础的核心Core对象)
Dec 27 Javascript
js判断选择的时间是否大于今天的代码
Aug 20 Javascript
处理文本部分内容的TextRange对象应用实例
Jul 29 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
Dec 18 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
May 15 Javascript
分享vue.js devtools遇到一系列问题
Oct 24 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
Dec 31 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 #Javascript
微信小程序 122100版本更新问题解决方案
Dec 22 #Javascript
JS闭包与延迟求值用法示例
Dec 22 #Javascript
jQuery实现两个select控件的互移操作
Dec 22 #Javascript
JS 调用微信扫一扫功能
Dec 22 #Javascript
Vue实现双向绑定的方法
Dec 22 #Javascript
JS实现物体带缓冲的间歇运动效果示例
Dec 22 #Javascript
You might like
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
javascript url几种编码方式详解
2016/06/06 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
npm国内镜像 安装失败的几种解决方案
2017/06/04 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
2018/04/12 jQuery
微信小程序实现漂亮的弹窗效果
2020/05/26 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Python检测生僻字的实现方法
2016/10/23 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
python通过Windows下远程控制Linux系统
2018/06/20 Python
python将txt文件读取为字典的示例
2018/12/22 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Python实现FLV视频拼接功能
2020/01/21 Python
python能开发游戏吗
2020/06/11 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
电气自动化自荐信
2013/10/10 职场文书
毕业生物理教师求职信
2013/10/17 职场文书
公务员的自我鉴定
2013/10/26 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技