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 相关文章推荐
JQuery index()方法使用代码
Jun 02 Javascript
js Map List 遍历使用示例
Jul 10 Javascript
jQuery 三击事件实现代码
Sep 11 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
Nov 21 Javascript
Ajax中解析Json的两种方法对比分析
Jun 25 Javascript
javascript文本模板用法实例
Jul 31 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 Javascript
js实现数组冒泡排序、快速排序原理
Mar 08 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
vue地区选择组件教程详解
May 04 Javascript
vue props 一次传多个值实例
Jul 22 Javascript
JS removeAttribute()方法实现删除元素的某个属性
Jan 11 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
一拳超人中怪人协会钦定! S级别最强四人!
2020/03/02 日漫
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
js 手机号码合法性验证代码集合
2012/09/29 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
javascript Deferred和递归次数限制实例
2014/10/21 Javascript
Javascript实现的简单右键菜单类
2015/09/23 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
JS实现元素上下左右移动效果
2017/10/18 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
详解如何配置vue-cli3.0的vue.config.js
2018/08/23 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
python调用java模块SmartXLS和jpype修改excel文件的方法
2015/04/28 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Django 多语言教程的实现(i18n)
2018/07/07 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
Python 发送邮件方法总结
2020/08/10 Python
python实现二分查找算法
2020/09/18 Python
学校先进集体事迹材料
2014/05/31 职场文书
安全月宣传标语
2014/10/07 职场文书
2015感人爱情寄语
2015/02/26 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
校友会致辞
2015/07/30 职场文书
网络营销实训总结
2015/08/03 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android