加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
index.js 2.39 KB
一键复制 编辑 原始数据 按行查看 历史
没雨溪 提交于 2023-08-20 00:12 . 增加链式调用
/**
* @param {Array} titleList 传入的标题数据和需要导出的key
* @param {Array} dataSource 传入的数据源
* @param {String} fileName 导出的文件名
*/
function tableToExcel(titleList = [], dataSource = [], fileName = "") {
//要导出的标题
// 处理数据 这样做是为了在很多数据的时候 导出自己想要的数据
let newDataSource = []
dataSource.forEach((item, index) => {
let tep = {};
titleList.forEach(({ key }) => {
tep[key] = key.split(".").reduce((prop, objKey) => {
try {
return prop[objKey]
} catch (e) {
return undefined
}
}, item)
})
newDataSource.push(tep)
})
// console.log(newDataSource)
let str = '<tr>';
for (let i = 0; i < titleList.length; i++) {
str += `<td>${titleList[i].title + '\t'}</td>`;
}
str += '</tr>';
str += '<tr>';
for (let i = 0; i < newDataSource.length; i++) {
for (let item in newDataSource[i]) {
let news = newDataSource[i][item] ? newDataSource[i][item] : "";
//style="mso-number-format:\'@\'" =>excel科学计数
//\t制表符 tab到下一行
str += `<td style="mso-number-format:\'@\'">${news + '\t'}</td>`;
}
str += '</tr>';
}
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><meta charset="UTF-8"><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
<x:Name>${fileName}</x:Name>
<x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
</head><body><table>${str}</table></body></html>`;
var base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) }
var link = document.createElement("a");
link.href = uri + base64(template);
link.download = fileName ? fileName + ".xls" : "数据.xls";//当前下载的excel名称
document.body.appendChild(link);
link.innerHTML = "点击下载"
// console.log(unescape(encodeURIComponent(template)))
link.click();
document.body.removeChild(link);
}
export default tableToExcel
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化