博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js导出excel
阅读量:7032 次
发布时间:2019-06-28

本文共 6341 字,大约阅读时间需要 21 分钟。

```<!DOCTYPE html>

<html>
<head lang="en">
<meta charset="UTF-8">
<title>html 表格导出Excel</title>
</head>
<body>
<div >
<button οnclick="method('tableExcel')">表格导出Excel</button>
<button οnclick="jsonMethod()">json导出Excel</button>
</div>
<div id="myDiv">
<table id="tableExcel" width="100%" border="1" cellspacing="0" cellpadding="0">
<tr><td colspan="5" align="center">html 表格导出道Excel</td></tr>
<tr><td>列标题1</td><td>列标题2</td><td>类标题3</td><td>列标题4</td><td>列标题5</td></tr>
<tr><td>aaa</td><td>bbb</td><td>ccc</td><td>ddd</td><td>eee</td></tr>
<tr><td>AAA</td><td>BBB</td><td>CCC</td><td>DDD</td><td>EEE</td></tr>
<tr><td>FFF</td><td>GGG</td><td>HHH</td><td>III</td><td>JJJ</td></tr>
</table>
</div>
</body>
</html>
<script language="JavaScript" type="text/javascript">
//---------------------------将JSON导出Excel---------------------------//

//需要进行数据转换,

// 我们使用ajax请求到的数据

var data = [{name:"hjm100",duty:'管理员',opensource:'http://git.oschina.net/hjm100',aa:'无用数据'},

{name:"zmjie100",duty:'前端开发',opensource:'http://git.oschina.net/zmjie100',aa:'无用数据'},
{name:"ghf100",duty:'前端开发',opensource:'http://git.oschina.net/ghf100',aa:'无用数据'},
{name:"zhengshanshan",duty:'前端开发',opensource:'http://git.oschina.net/zhengshanshan',aa:'无用数据'}];
//数据处理
var title = [{"value":"名称",key:'name'},
{"value":"职务",key:'duty'},
{"value":"开源地址",key:'opensource'}];

/**dataSwitch函数参数

  • @param datas 原始的json数据
  • @param titles 自己设置的表头数据
  • 注意:
  • 1.必须设置titles
  • 2.titles是过滤datas的必要条件
  • 3.titles中的key属性对应的是需要提取的原始数据的key值
  • 4.datas与titles需要相互对应
    */
    //数据转换函数
    function dataSwitch(datas,titles){
    if(datas == ''|| titles=='') return;
    var res = [],resd = [];
    for (var j = 0; j < datas.length; j++) {
    //清空一下res
    res = []
    for (var i = 0; i < titles.length; i++) {
    res.push({"value":datas[j][titles[i].key]})
    }
    resd.push(res)
    }
    return (resd)
    }

//JSONToExcelConvertor函数需要的数据格式

// var datas = {"title":[{"value":"店铺"},{"value":"点击量"},{"value":"竞争力"}],
// "data":[[{"value":"运营淘宝代",}, {"value":3057},{"value":955}],
// [{"value":"淘宝网",}, {"value":412},{"value":1860}]]
// };

//空壳函数用来做调用,与方便理解!!

function jsonMethod(){
//执行导出函数
JSONToExcelConvertor(dataSwitch(data,title), "鸿基梦", title,'鸿基梦组织重要成员信息汇总');
}

/**JSONToExcelConvertor函数参数

  • @param JSONData 需要导出的数据
  • @param FileName Excel表名
  • @param ShowLabel 表头
  • @param Explain 表格说明(选填)
  • 注意:
  • 上述参数都为转化后数据
    */
    function JSONToExcelConvertor(JSONData, FileName, ShowLabel,Explain) {
    //先转化json
    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
    var excel = '<table>',row = '';
    //添加说明(如果想要添加说明请传入Explain参数)
    if(Explain)row +="<tr><td colspan='"+ShowLabel.length+"' align='center'>"+Explain+"</td></tr>";
    //设置表头
    row += "<tr>";
    for (var i = 0, l = ShowLabel.length; i < l; i++){
    row += "<td>" + ShowLabel[i].value + '</td>';
    }
    //换行
    excel += row + "</tr>";
    //设置数据
    for (var i = 0; i < arrData.length; i++){
    var row = "<tr>";
    for (var index in arrData[i]) {
    var value = arrData[i][index].value === "." ? "" : arrData[i][index].value;
    row += '<td>' + value + '</td>';
    }
    excel += row + "</tr>";
    }
    excel += "</table>";
    var excelFile = "<html xmlns:o='urn:schemas-microsoft-com?office' xmlns:x='urn:schemas-microsoft-com?excel' xmlns='http://www.w3.org/TR/REC-html40'>";
    excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';
    excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';
    excelFile += '; charset=UTF-8">';
    excelFile += "<head>";
    excelFile += "<!--[if gte mso 9]>";
    excelFile += "<xml>";
    excelFile += "<x:ExcelWorkbook>";
    excelFile += "<x:ExcelWorksheets>";
    excelFile += "<x:ExcelWorksheet>";
    excelFile += "<x:Name>";
    excelFile += FileName;
    excelFile += "</x:Name>";
    excelFile += "<x:WorksheetOptions>";
    excelFile += "<x:DisplayGridlines/>";
    excelFile += "</x:WorksheetOptions>";
    excelFile += "</x:ExcelWorksheet>";
    excelFile += "</x:ExcelWorksheets>";
    excelFile += "</x:ExcelWorkbook>";
    excelFile += "</xml>";
    excelFile += "<[endif]-->";
    excelFile += "</head>";
    excelFile += "<body>";
    excelFile += excel;
    excelFile += "</body>";
    excelFile += "</html>";
    var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);
    var link = document.createElement("a");
    link.href = uri;
    link.style = "visibility:hidden";
    link.download = FileName + ".xls";
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    }

//---------------------------将表格导出Excel---------------------------//

var idTmr;
//判断浏览器
function getExplorer(){
var explorer = window.navigator.userAgent ;
//ie
if(explorer.indexOf("MSIE") >= 0) return 'ie';
//firefox
else if(explorer.indexOf("Firefox") >= 0) return 'Firefox';
//Chrome
else if(explorer.indexOf("Chrome") >= 0) return 'Chrome';
//Opera
else if(explorer.indexOf("Opera") >= 0) return 'Opera';
//Safari
else if(explorer.indexOf("Safari") >= 0) return 'Safari';
}
function method(tableid){ //整个表格拷贝到EXCEL中
if(getExplorer()=='ie'){
var curTbl = document.getElementById(tableid),
oXL = new ActiveXObject("Excel.Application"),
//创建AX对象excel
oWB = oXL.Workbooks.Add(),
//获取workbook对象
xlsheet = oWB.Worksheets(1),
//激活当前sheet
sel = document.body.createTextRange();
sel.moveToElementText(curTbl);
//把表格中的内容移到TextRange中
sel.select();
//全选TextRange中内容
sel.execCommand("Copy");
//复制TextRange中内容
xlsheet.Paste();
//粘贴到活动的EXCEL中
oXL.Visible = true;
//设置excel可见属性
try {
var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (.xls), .xls");
} catch (e) {
print("Nested catch caught " + e);
} finally {
oWB.SaveAs(fname);
oWB.Close(savechanges = false);
oXL.Quit();
oXL = null;
idTmr = window.setInterval("Cleanup();", 1);
}
}else{
tableToExcel(tableid)
}
oXL.worksheets(1).Paste;
}

//兼容ie之外浏览器

function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = '<html><head><meta charset="UTF-8"></head><body><table>{table}</table></body></html>',
base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) },
format = function(s, c) {
return s.replace(/{(\w+)}/g,
function(m, p) { return c[p]; })
};
return function(table, name) {
if(!table.nodeType) table = document.getElementById(table)
var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML}
window.location.href = uri + base64(format(template, ctx))
}
})()
</script>

```

转载于:https://www.cnblogs.com/lovellll/p/10206281.html

你可能感兴趣的文章
LeetCode算法题-Perfect Number(Java实现)
查看>>
maven3.1安装及配置
查看>>
待人原则
查看>>
如何熟悉一个新项目
查看>>
2018年蓝桥杯java b组第二题
查看>>
结对-贪吃蛇游戏-测试过程
查看>>
实现Servlet容器一
查看>>
Python函数式编程指南(转)
查看>>
Spring4.x所有Maven依赖
查看>>
盒子变形-盒子加padding后 变形问题,
查看>>
小程序:在{{}}中使用函数
查看>>
Transporting Data Between Database
查看>>
android网络编程之HttpUrlConnection的讲解--上传大文件
查看>>
MySQL所学所思所想
查看>>
1、Filebeat概述
查看>>
助教第一次作业
查看>>
python04
查看>>
Json 数组传值
查看>>
Entity FrameWork 6帮助类
查看>>
如何防御“神器”Mimikatz窃取系统密码?
查看>>