前端导出的表格,类似于这种样式的解决办法分析出原因,使用JS将Table数据导出到Excel中,如果td中书纯数字的话,在Excel格式就是number类型,所以,想长数字会变成科学计数法。
于是乎就在网上百度找对应的解决办法,在转换导入到Excel前给给类型变成字符串String类型。
百度上是这样的,在td中加一个样式 style=‘mso-number-format:"@"’,如这样的
var tableToExcel = (function() {
var uri = 'data:application/vnd.ms-excel;base64,',
template = ' {table}
',
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, filename) {
if (!table.nodeType) table = document.getElementById(table);
//console打印出table.innerHTML出则是table的页面代码
//根据正则表达式,把style='mso-number-format:"\@"' 塞入td中,将数据转成String
table.innerHTML = table.innerHTML.replace(/
其实就是在点击导出按钮的时候,生成的table表格的td使用正则动态替换成:
appendHtml = appendHtml.replace(/
此时问题完美解决,不会再根据科学计数法展示表格内容!
完整代码片段:
exportExcel () {
// 使用outerHTML属性获取整个table元素的HTML代码(包括标签),然后包装成一个完整的HTML文档,设置charset为urf-8以防止中文乱码
let tableHtml = document.getElementsByClassName("creditrecord");
var appendHtml = "";
for(var i=0;i