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 无效。
如果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();
正文到此结束
- 本文标签: JavaScript
- 本文链接: https://code.jiangjiesheng.cn/article/92
- 版权声明: 本文由小江同学原创发布,转载请先联系本站长,谢谢。