JavaScript生成.xls文件的代码

贴代码,一切尽在注释中

<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控件,之后在弹出的对话框中点击"是"

下载下来的表格如下:

chrome:

打开表格:

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

(0)

相关推荐

  • jsp实现从服务器下载xls文件到客户端的方法

    本文实例讲述了jsp实现从服务器下载xls文件到客户端的方法.分享给大家供大家参考,具体如下: 参考网上的代码写了一个下载xls文件到客户端的jsp页面,只要将服务器的文件地址传给这个jsp页面就可以实现下载文件到客户端了. <%@ page language="java"import="java.util.*"pageEncoding="utf-8"%> <%@ taglib prefix="c"uri=&

  • 如何解决在jsp页面上导入.xls文件报错问题

    在jsp页面上导入.xls文件,报错: java.io.IOException: Posted content type isn't multipart/form-data at com.oreilly.servlet.multipart.MultipartParser.<init>(MultipartParser.java:166) at com.oreilly.servlet.MultipartRequest.<init>(MultipartRequest.java:222)

  • JavaScript生成.xls文件的代码

    贴代码,一切尽在注释中 <html> <head> <meta charset="utf-8"> </head> <body> <input type="button" value="下载设备模板" onclick="foo;" /> <script type="text/javascript" language="ja

  • 用Coldfusion生成 OFFICE 文件的代码

    这几天在经典.5D碰到很多人在问,如何用CF生成EXCEL文件,昨天夜晚就写了一个示范程序放上来供大家参考. 我建议大家先自己慢慢体会,程序本身并不复杂,如果看不懂的再来问,最好不要看都没看就来发问... 好的,我就用我CCF论坛的数据库来做是实验,目的是在线打开EXCEL文件和在线生成EXCEL文件.文件内容就是CCF论坛所有版块的名称和编号.我顺便做了个生成WORD文件的.代码就改了一处.大家仔细看看. 在线打开OFFICE文件必须你系统安装了OFFICE.记住这点,要不然就会提示下载. <

  • java生成压缩文件示例代码

    代码: 复制代码 代码如下: import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream; /**  * @project: Test  * @author

  • php生成txt文件实例代码介绍

    这是一个朋友过来的 php 生成 txt 文件代码,这只是一个实例,需要我来给他生成多个 txt 文件实例的,但我觉得他这个代码有点意思,所以就分享上来了. 先说下这个 php 生成 txt 文件代码都是什么功能吧,肯定是要生成 txt 文件的,有点废话了,不说其它的了,这个 php 代码可以生成指定目录下的一个 txt 文件,并在 txt 文件里面写入三行文字,这个是在 php 里面定义好的. 夏日博客分享下实例的代码如下: <!doctype html> <html> <

  • 详解python脚本自动生成需要文件实例代码

    python脚本自动生成需要文件 在工作中我们经常需要通过一个文件写出另外一个文件,然而既然是对应关系肯定可以总结规律让计算机帮我们完成,今天我们就通过一个通用文件生成的python脚本来实现这个功能,将大家从每日重复的劳动中解放! 定义一个函数 def produceBnf(infilename,outfilename): List=[] with open(infilename,'r') as inf: for line in inf.readlines(): List.append(re.

  • php在线生成ico文件的代码

    index.php 复制代码 代码如下: <?PHP $output = ""; if(isset($_GET['action'])&&$_GET['action'] == 'make'){     if(isset($_FILES['upimage']['tmp_name']) && $_FILES['upimage']['tmp_name'] && is_uploaded_file($_FILES['upimage']['tmp

  • Javascript 生成无限下拉列表实现代码

    复制代码 代码如下: //公司二维数组数据源 Office = [ ["Dept", "ParentDept"], ["业务部", "0"], ["技术部", "0"], ["市场部", "0"], ["www.yongfa365.com", "业务部"], ["业务部小杨", "

  • javascript高级的文件目录排序代码

    刚写完,欢迎大家帮忙测试 完整的测试代码: 高级目录,文件名排序 #page{} 高级目录,文件名排序 主要实现了目录中的数字按大小排序 排序结果: //accepts a string; returns the string with regex metacharacters escaped. the returned string // can safely be used at any point within a regex to match the provided literal s

  • Javascript生成json的函数代码(可以用php的json_decode解码)

    但是有个问题 虽然JS解码JSON非常方便,但是编码似乎没有什么好办法- 本着能懒即懒,不能懒也尽量懒的原则,古狗了一下 还真让我发现了 PHP里直接用json_decode就可以解码,用起来相当方便 复制代码 代码如下: function json_encode_js(aaa){ function je(str){ var a=[],i=0; var pcs="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"

  • asp下用fso生成js文件的代码

    <%sub fsojs()%>  <% Set fso= Server.CreateObject("Scripting.FileSystemObject") set fd=fso.createtextfile(server.MapPath("../category.js"),true) '开始操作 set rs=server.CreateObject("adodb.recordset") rs.Open "select

随机推荐