纯js实现文件下载
以下是js文本,粘贴复制一键搞定:
function exportExcel(title){
var type='xlsx';var tables=document.getElementsByTagName('table');
var titleTable=tables[0];
if(titleTable==undefined){alert("未找到需要导出的数据");
return false}
var keyMap=[];for(var i=0;i<titleTable.rows[0].cells.length;i++){
keyMap.push(getTdText(titleTable.rows[0].cells[i]))}
var data=[];for(var k=0;k<tables.length;k++){
for(var i=0;i<tables[k].rows.length;i++){
var obj={};for(var j=0;j<keyMap.length;j++){
obj[keyMap[j]]=getTdText(tables[k].rows[i].cells[j])}data.push(obj)};}
var tmpdata=[];data.map((v,i)=>keyMap.map((k,j)=>Object.assign({},{
v:v[k],position:(j>25?getCharCol(j):String.fromCharCode(65+j))+(i+1)})))
.reduce((prev,next)=>prev.concat(next)).forEach((v,i)=>tmpdata[v.position]={v:v.v});
var outputPos=Object.keys(tmpdata);
var tmpWB={SheetNames:['mySheet'],Sheets:
{'mySheet':Object.assign({},tmpdata,{'!ref':outputPos[0]+':'+outputPos[outputPos.length-1]})}};
var tmpDown=new Blob([s2ab(XLSX.write(tmpWB,
{bookType:(type==undefined?'xlsx':type),bookSST:false,type:'binary'}))], {type:""});
var href=URL.createObjectURL(tmpDown);var aLink=document.createElement('a');
aLink.href=href;aLink.download=title==undefined?new Date().getTime():title+".xlsx";
aLink.style.display='none';document.body.appendChild(aLink);aLink.click();setTimeout(function()
{URL.revokeObjectURL(tmpDown)},100)}
function s2ab(s){var buf=new ArrayBuffer(s.length);var view=new Uint8Array(buf);
for(var i=0;i!=s.length;++i)view[i]=s.charCodeAt(i)&0xFF;return buf}function getCharCol(n)
{let temCol='',s='',m=0;while(n>0){m=n%26+1;s=String.fromCharCode(m+64)+s;n=(n-m)/26}return s}
function getTdText(node){var child=node.Children;if(child==undefined){return node.innerText;}
else{var text='';for(var i=0;i<child.length;i++){text+=getTdText(child[i]);}return text;}}
导出excel可由自己命名,填在方法里;