原创

js-table表格导出excel-长数字导出后变成科学计数法处理

解决方案:

1、Navicat导出

2、可以导出的 html 结构

    var appendHtml =
    '<table id="query_result1">'
    +'<thead class=""><tr><th><div>主键</div></th><th><div>创建时间</div></th></tr></thead>'
    +'<tbody><tr><td style="">24201883434356582</td><td style="">2015-10-29 11:21:28</td></tr>'
    +'<tr><td style="">24201883434356835</td><td style="">2015-10-30 16:35:02</td></tr>'
    +'<tr><td style="">24201883434357061</td><td style="">2015-11-01 09:47:24</td></tr></tbody>'
    +'</table>';
    //这里replace查询的内容要和实际匹配一下
    appendHtml = appendHtml.replace(/<td style=""/g, "<td STYLE='MSO-NUMBER-FORMAT:\\@'");
    var html = "<html><head><meta charset='utf-8' /></head><body>" + appendHtml + "</body></html>";
    // 实例化一个Blob对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象
    var blob = new Blob([html], {
        type: "application/vnd.ms-excel"
    }); //application/octet-stream
    //也可以用js创建一个a标签
    var a = document.createElement('a');
    // var a = document.getElementsByTagName("a")[0];
    // 利用URL.createObjectURL()方法为a元素生成blob URL
    a.href = URL.createObjectURL(blob);
    // 设置文件名
    a.download = "统计表.xls"; //xlsx
    a.click();

说明:

1、bigint强转成char无效: select convert(pk_id,CHAR) from xxx_table 无效。

https://blog.csdn.net/nihaoqiulinhe/article/details/53537540?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1

如果excel中 显示一个 绿色的小三角,表示文本格式。

其他,未验证,可百度。

mso-number-format:"0" NO Decimals 
mso-number-format:"0\.000" 3 Decimals 
mso-number-format:"\#\,\#\#0\.000" Comma with 3 dec 
mso-number-format:"mm\/dd\/yy" Date7 
mso-number-format:"mmmm\ d\,\ yyyy" Date9 
mso-number-format:"m\/d\/yy\ h\:mm\ AM\/PM" D -T AMPM 
mso-number-format:"Short Date" 01/03/1998 
mso-number-format:"Medium Date" 01-mar-98 
mso-number-format:"d\-mmm\-yyyy" 01-mar-1998 
mso-number-format:"Short Time" 5:16 
mso-number-format:"Medium Time" 5:16 am 
mso-number-format:"Long Time" 5:16:21:00 
mso-number-format:"Percent" Percent - two decimals 
mso-number-format:"0%" Percent - no decimals 
mso-number-format:"0\.E+00" Scientific Notation 
mso-number-format:"\@" Text  (目前只用过)
mso-number-format:"\#\ ???\/???" Fractions - up to 3 digits (312/943)

SQL平台可使用(先把显示条数改到最大)
如果直接通过js给元素批量加style,导出执行时又会去还原。

var targetTableObj = document.getElementById("query_result1");
var appendHtml = targetTableObj.outerHTML;
console.log("appendHtml =" + appendHtml); //看看实际是什么,再replace /xxx/g
//这里replace查询的内容要和实际匹配一下
appendHtml = appendHtml.replace(/<td style=""/g, "<td STYLE='MSO-NUMBER-FORMAT:\\@'");
var html = "<html><head><meta charset='utf-8' /></head><body>" + appendHtml + "</body></html>";
// 实例化一个Blob对象,其构造函数的第一个参数是包含文件内容的数组,第二个参数是包含文件类型属性的对象
var blob = new Blob([html], {
    type: "application/vnd.ms-excel"
}); //application/octet-stream
//也可以用js创建一个a标签
var a = document.createElement('a');
// var a = document.getElementsByTagName("a")[0];
// 利用URL.createObjectURL()方法为a元素生成blob URL
a.href = URL.createObjectURL(blob);
// 设置文件名
a.download = "统计表.xls"; //xlsx
a.click();
正文到此结束
本文目录