- 导入js-xlsx的js文件
<script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
- 添加模拟下载标签(不需要模拟下载不添加)
<a href="" id="h_href"></a>
- 工具类
var xlsxUtil = {
fileData:{},
buildExcelDate:function(data){
var excelData = {};
data.forEach(function(value,i){
i += 1;
value.forEach(function(value01,j){
excelData[xlsxUtil.createCellPos(j)+i] = {v:value01}
});
});
return excelData;
},
buildExcel:function(json, type) {
if (typeof Object.assign != 'function') {
Object.assign = function(target) {
'use strict';
if (target == null) {
throw new TypeError('Cannot convert undefined or null to object');
}
target = Object(target);
for (var index = 1; index < arguments.length; index++) {
var source = arguments[index];
if (source != null) {
for (var key in source) {
if (Object.prototype.hasOwnProperty.call(source, key)) {
target[key] = source[key];
}
}
}
}
return target;
};
}
json = xlsxUtil.buildExcelDate(json);
var outputPos = Object.keys(json);
var fileJson = {
SheetNames: ['mySheet'],
Sheets: {
'mySheet': Object.assign(
json,
{
'!ref': outputPos[0] + ':' + outputPos[outputPos.length - 1]
})
}
};
console.log(fileJson);
var fileData = new Blob([xlsxUtil.s2ab(XLSX.write(fileJson,
{bookType: (type == undefined ? 'xlsx':type),bookSST: false, type: 'binary'}
))], {
type: ""
});
return fileData;
},
isIE:function() {
if (!!window.ActiveXObject || "ActiveXObject" in window)
return true;
else
return false;
},
s2ab:function(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;
},
createCellPos:function( n ){
var ordA = 'A'.charCodeAt(0);
var ordZ = 'Z'.charCodeAt(0);
var len = ordZ - ordA + 1;
var s = "";
while( n >= 0 ) {
s = String.fromCharCode(n % len + ordA) + s;
n = Math.floor(n / len) - 1;
}
return s;
},
downloadExcel:function(aId,fileName,blob){
var save_link = document.getElementById(aId);
save_link.href = URL.createObjectURL(blob);
save_link.download = fileName+".xlsx";
save_link.click();
URL.revokeObjectURL(blob);
},
buildAndDownload:function(aId,fileName,json,type){
var blob = xlsxUtil.buildExcel(json,type);
if(xlsxUtil.isIE()){
window.navigator.msSaveOrOpenBlob(blob,fileName+".xlsx");
}else{
xlsxUtil.downloadExcel(aId,fileName,blob);
}
}
}
- 测试类
function test(){
var testJson= [
["A1","B1"],
["A2","B2"],
]
xlsxUtil.buildAndDownload("h_href","test.xlsx",testJson);
}