前端JQ excel导出数字可以计算求和

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="dist/xlsx.full.min.js"></script>
<script>
function json2Excel() {
dataSource = [
["编号", "名称", "价格", "可以求和计算"],
[1, "4", "¥78.5", 4],
[2, "3", "¥65.3", 2],
[3, "2", "¥89.4", 1],
];
var wopts = {
bookType: 'xlsx',
bookSST: false,
type: 'binary'
};
var workBook = {
SheetNames: ['Sheet1'],
Sheets: {},
Props: {}
};
//1、XLSX.utils.json_to_sheet(data) 接收一个对象数组并返回一个基于对象关键字自动生成的“标题”的工作表,默认的列顺序由使用Object.keys的字段的第一次出现确定
//2、将数据放入对象workBook的Sheets中等待输出
const sheet2JSONOpts = {
/** Default value for null/undefined values */
defval: 'D'//给defval赋值为空的字符串
};
workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(dataSource);

//3、XLSX.write() 开始编写Excel表格
//4、changeData() 将数据处理成需要输出的格式
saveAs(new Blob([changeData(XLSX.write(workBook, wopts))], { type: 'application/octet-stream' }))
}

function saveAs(obj, fileName) {//当然可以自定义简单的下载文件实现方式
  
fileName =  fileName ? fileName + '.xlsx' : new Date().getTime() + '.xlsx'
    if (window.navigator.msSaveBlob) {

        //href = window.navigator.msSaveOrOpenBlob(tmpDown, excelName + ".xlsx");
        href = window.navigator.msSaveOrOpenBlob(obj, fileName);
    } else {
        var tmpa = document.createElement("a");
        tmpa.download = fileName;
        tmpa.href = URL.createObjectURL(obj); //绑定a标签
        tmpa.click(); //模拟点击实现下载
    }
    
   
    
    setTimeout(function () { //延时释放
    URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL
    }, 100);
    
    }

function changeData(s) {
//如果存在ArrayBuffer对象(es6) 最好采用该对象
if (typeof ArrayBuffer !== 'undefined') {

//1、创建一个字节长度为s.length的内存区域
var buf = new ArrayBuffer(s.length);

//2、创建一个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾
var view = new Uint8Array(buf);

//3、返回指定位置的字符的Unicode编码
for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
return buf;

} else {
var buf = new Array(s.length);
for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
return buf;
}
}
</script>
</head>
<body>
<button onclick="json2Excel()">导出</button>
</body>
</html>

posted @ 2020-12-05 16:49  914556495  阅读(294)  评论(0编辑  收藏  举报