Table用JS导出Excel格式后数字格式问题

最近做一个将Table数据导出到Excel的需求,从网上找了两款对应的代码,我用的是 使用JS将Table数据导出到Excel里(2中方法)里的第二种,刚开始感觉挺好的,之后发现有点不对劲,数据若是000002的话,转到Excel后就变成2了。
描述:我这个表单用有的数据是000开头的
我这个表单用有的数据是000开头的
数据一个是001、002、003才对
数据一个是001、002、003才对
然后分析出原因,使用JS将Table数据导出到Excel中,如果td中书纯数字的话,在Excel格式就是number类型,所以,想001会变成1这种的。
于是乎就在网上百度找对应的解决办法,在转换导入到Excel前给给类型变成字符串String类型。
百度上是这样的,在td中加一个样式 style=‘mso-number-format:"@"’,如这样的

<td style='mso-number-format:"\@"'><label class="text">000001</label></td>

我在想我能不能在调用导出Excel的公共方法中做处理,给他加上呢,
发现调用导出Excel的公共方法中可以做批量修改,(直接贴上改后代码)

var tableToExcel = (function() {
    
    
  var uri = 'data:application/vnd.ms-excel;base64,',
      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 http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
      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(/<td/g, "<td STYLE='MSO-NUMBER-FORMAT:\\@'"); 
	
    var ctx = {
    
     worksheet: name || 'Worksheet', table: table.innerHTML };//此时的innerHTML数据可以自己自定义 比如json转化 只要值要数据符合即可
    var link = document.createElement("A");
    link.href = uri + base64(format(template, ctx));
    link.download = filename;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
  };
});

修改后:现在的数据则是正确的,得到自己想要的效果
现在的数据则是正确的,得到自己想要的效果
查看Excel源码,发现都已经是str类型的了
查看Excel源码,发现都已经视str类型的了

记录,总结,分享!学习永远在路上!

猜你喜欢

转载自blog.csdn.net/qq_35340913/article/details/102607744