导出Excel时候出现一个问题:

比如是"订单号"、“手机号”、“身份证”等等,他是一个一长串的数字组成的字符串,导出到EXCEL之后office傻不拉几的自以为是的将这串数字字符串转成"科学计数法",变成如下:

此外,EXCEL还会自动将日期转为英文日期格式,如:

如何解决呢??


解决的方法一:

导出这个数字字符串的时候,在这串数字前面加一个: 英文的 全角的 单引号 '

 效果如下: 

有了这个单引号' 之后, EXCEL 就认为这个值是字符串了,就不会当做他是数字了,也就不会科学计数法了!

最后再说一遍:

给你的 一长串 数字的 字符串 前面加上: 

英文的 全角的 单引号 '


解决的方法二:

或者在每个<td>里添加样式:style='mso-number-format:\"\@\";'

<td style='mso-number-format:\"\@\";'>7894561230123456789</td>

也能实现这个效果

附上完整 table2excel.js 代码(已添加: style='mso-number-format:\"\@\";' , 见112行 ):

/*  调用方法:*   $('#test_table').table2excel({//'#test_table' table的id*       subtotal: 1,//可选参数(可删除此行),默认值:0*       width:200,//导出excel表格的宽度百分比的值(不含%号),可删除此行(默认100%)*       filename: 'excel_' + new Date().getTime() + '.xls', //excel文件名称,扩展名:.xlsx 或者.xls*   });*/
(function ($, window, document, undefined) {var pluginName = "table2excel",defaults = {exclude: ".noExl",name: "Table2Excel",filename: "table2excel",fileext: ".xls",exclude_img: true,exclude_links: true,exclude_inputs: true,preserveColors: false,subtotal: 0,//"合计"行所在的行号(不包括标题行),0表示没有合计行...width: 100,//表格宽度百分比,默认100%};//插件配置function Plugin(element, options) {this.element = element;this.settings = $.extend({}, defaults, options);this._defaults = defaults;this._name = pluginName;this.init();}Plugin.prototype = {init: function () {var e = this;var w = getWidth(e.settings);//导出EXCEL表格的宽度,默认100%var utf8Heading = "<meta http-equiv=\"content-type\" content=\"application/vnd.ms-excel; charset=UTF-8\">";e.template = {head: "<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\">" + utf8Heading + "<head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets>",sheet: {head: "<x:ExcelWorksheet><x:Name>",tail: "</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>"},mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>",table: {head: " <table border='1' style='width:" + w + "%;'>",//<table>的边框&宽度tail: " </table>"},foot: "</body></html>"};e.tableRows = [];//读取原始表var rowNumber = 0;//行号$(e.element).each(function (i, o) {var tempRows = "";//table的html$(o).find("tr").not(e.settings.exclude).each(function (i, p) {//<tr>的样式var trStyles = "";//整行样式//开始创建一行表格if (trStyles) {tempRows += "<tr align='center' style='" + trStyles + "'>";//内容居中:align='center'}else {tempRows += "<tr align='center'>";//内容居中:align='center'}//读取原始<table>的<th>表头行(表头必须是<th>!表头如果是<td>的话则会当做普通数据行处理...)$(p).find("th").not(e.settings.exclude).each(function (i, q) {//<th>的样式:var thStyles = "background-color: cornflowerblue; color:white;";var rc = {rows: $(this).attr("rowspan"),cols: $(this).attr("colspan"),flag: $(q).find(e.settings.exclude)};if (rc.flag.length > 0) {tempRows += "<td> </td>"; //空格!} else {tempRows += "<td";if (rc.rows > 0) {tempRows += " rowspan='" + rc.rows + "' ";//跨行}if (rc.cols > 0) {tempRows += " colspan='" + rc.cols + "' ";//跨列}if (thStyles) {tempRows += " style='" + thStyles + "'";//样式}tempRows += ">" + $(q).html() + "</td>";//内容}});//读取原始<table>的<td>数据行$(p).find("td").not(e.settings.exclude).each(function (i, q) {//<td>的样式var tdStyles = "background-color:yellow;";//合计行的样式var rc = {rows: $(this).attr("rowspan"),cols: $(this).attr("colspan"),flag: $(q).find(e.settings.exclude)};if (rc.flag.length > 0) {tempRows += "<td> </td>"; //空格!                       } else {tempRows += "<td ";if (rc.rows > 0) {tempRows += " rowspan='" + rc.rows + "' ";//跨行}if (rc.cols > 0) {tempRows += " colspan='" + rc.cols + "' ";//跨列}var subtotal = getSubtotal(e.settings);//获取"合计"行所在的行号(不包括标题行)if (rowNumber == subtotal) {//if(当前行行号 == 合计行行号)if (tdStyles) {tempRows += " style='mso-number-format:\"\@\"; " + tdStyles + "' ";//样式}else {tempRows += " style='mso-number-format:\"\@\";' ";//纯文本}}else {tempRows += " style='mso-number-format:\"\@\";' ";//纯文本}tempRows += ">" + $(q).html() + "</td>";}});tempRows += "</tr>";//生成一行结束rowNumber++;//行号+1});// exclude img tagsif (e.settings.exclude_img) {tempRows = exclude_img(tempRows);}// exclude link tagsif (e.settings.exclude_links) {tempRows = exclude_links(tempRows);}// exclude input tagsif (e.settings.exclude_inputs) {tempRows = exclude_inputs(tempRows);}e.tableRows.push(tempRows);});e.tableToExcel(e.tableRows, e.settings.name, e.settings.sheetName);},tableToExcel: function (table, name, sheetName) {var e = this, fullTemplate = "", i, link, a;e.format = function (s, c) {return s.replace(/{(\w+)}/g, function (m, p) {return c[p];});};sheetName = typeof sheetName === "undefined" ? "Sheet" : sheetName;e.ctx = {worksheet: name || "Worksheet",table: table,sheetName: sheetName};fullTemplate = e.template.head;if ($.isArray(table)) {Object.keys(table).forEach(function (i) {//fullTemplate += e.template.sheet.head + "{worksheet" + i + "}" + e.template.sheet.tail;fullTemplate += e.template.sheet.head + sheetName + i + e.template.sheet.tail;});}fullTemplate += e.template.mid;if ($.isArray(table)) {Object.keys(table).forEach(function (i) {fullTemplate += e.template.table.head + "{table" + i + "}" + e.template.table.tail;});}fullTemplate += e.template.foot;for (i in table) {e.ctx["table" + i] = table[i];}delete e.ctx.table;var isIE = navigator.appVersion.indexOf("MSIE 10") !== -1 || (navigator.userAgent.indexOf("Trident") !== -1 && navigator.userAgent.indexOf("rv:11") !== -1); // this works with IE10 and IE11 both :)//if (typeof msie !== "undefined" && msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))      // this works ONLY with IE 11!!!if (isIE) {if (typeof Blob !== "undefined") {//use blobs if we canfullTemplate = e.format(fullTemplate, e.ctx); // with this, works with IEfullTemplate = [fullTemplate];//convert to arrayvar blob1 = new Blob(fullTemplate, { type: "text/html" });window.navigator.msSaveBlob(blob1, getFileName(e.settings));} else {//otherwise use the iframe and save//requires a blank iframe on page called txtArea1txtArea1.document.open("text/html", "replace");txtArea1.document.write(e.format(fullTemplate, e.ctx));txtArea1.document.close();txtArea1.focus();sa = txtArea1.document.execCommand("SaveAs", true, getFileName(e.settings));}} else {var blob = new Blob([e.format(fullTemplate, e.ctx)], { type: "application/vnd.ms-excel" });window.URL = window.URL || window.webkitURL;link = window.URL.createObjectURL(blob);a = document.createElement("a");a.download = getFileName(e.settings);a.href = link;document.body.appendChild(a);a.click();document.body.removeChild(a);}return true;}};//获取excel文件名function getFileName(settings) {return (settings.filename ? settings.filename : "table2excel");}//获取"合计"行所在的行号(不包括标题行)function getSubtotal(settings) {return (settings.subtotal ? settings.subtotal : 0);//默认值0}//导出Excel的表格宽度百分比的值(不含%号),默认100%function getWidth(settings) {return (settings.width ? settings.width : 100);}// Removes all img tagsfunction exclude_img(string) {var _patt = /(\s+alt\s*=\s*"([^"]*)"|\s+alt\s*=\s*'([^']*)')/i;return string.replace(/<img[^>]*>/gi, function myFunction(x) {var res = _patt.exec(x);if (res !== null && res.length >= 2) {return res[2];} else {return "";}});}// Removes all link tagsfunction exclude_links(string) {return string.replace(/<a[^>]*>|<\/a>/gi, "");}// Removes input paramsfunction exclude_inputs(string) {var _patt = /(\s+value\s*=\s*"([^"]*)"|\s+value\s*=\s*'([^']*)')/i;return string.replace(/<input[^>]*>|<\/input>/gi, function myFunction(x) {var res = _patt.exec(x);if (res !== null && res.length >= 2) {return res[2];} else {return "";}});}$.fn[pluginName] = function (options) {var e = this;e.each(function () {if (!$.data(e, "plugin_" + pluginName)) {$.data(e, "plugin_" + pluginName, new Plugin(this, options));}});// chain jQuery functionsreturn e;};
})(jQuery, window, document);

解决导出EXCEL自动将长的数字的字符串变成E+的科学计数法相关推荐

  1. 数据库导出到excel解决科学计数法问题

    用Navicat等工具导出数据到excel的时候,身份证等超过11位的数字会自动转换成科学计数法,末尾数字变成"0000".如何解决? 解决方式:给超过11位的数字末尾添加   \ ...

  2. MySQL导出csv文件,数字过长出现科学计数法的问题

    原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 问题描述: 使用 MySQL 客户端工具导出 excel 数据,如果某个字段为纯数字,并且 length 过长,在导出的文件中,它就会以科 ...

  3. MySQL使用Navicat导出Excel时数字展示会变成科学计数法

    问题描述:MySQL使用Navicat导出Excel时数字会变成科学计数法 解决方法:"数据" 类型需要在导出时转成 "字符串" 类型 select CONCA ...

  4. 数据库导出的csv文件纯数字被转为科学计数法

    前言 在使用阿里云的数据库管理控制台,查询到的身份证想要导出csv表格,但是发现打开之后的身份证使用了科学计数法,并且只保留15位,多余的全都被自动填充了0,效果如下. 原因 这个的原因其实和数据库. ...

  5. 如何解决EXCEL中的科学计数法

    EXCEL虽然能够有效的处理数据,尤其是数字的计算.但是,在单元格中输入数字的时候,很多时候都会受到科学计算法的困扰. 当单元格中输入的数字,超过11位时,就会自动变成科学计数法.无论您怎么调整列的宽 ...

  6. excel怎么让数字不用科学计数法

    excel怎么让数字不用科学计数法 方法1:通过设置单元格格式来取消科学计数法.: 方法2:在输入数字前输入一个英文状态下的单引号 Excel默认对超过11位字符长度的数值以科学计数法表示,且超过15 ...

  7. R语言科学计数法数据改变/丢失/失准,取消科学计数法的原因和解决方法

    问题描述 如何在R中取消科学计数法 & 对R中使用科学技术法表示的数据"取消科学计数法"以后,得到的值和原来的值会不一样. 需求背景 分析留存数据时,数据库底表的字段是一个 ...

  8. Python 多位数字写入CSV文件,避免科学计数法显示,超长数字,超大数字,精度保留

    问题:多位数字直接写入CSV文件后,发现以下问题 1.数字位数过多,excel打开显示科学计数法 2.即使excel单元格格式为数字,发现最后几位被四舍五入,精度丢失 解决思路: 解决办法:数字改成字 ...

  9. java导出的excel数字过长_用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式(转)...

    做过很多次导出excel了.都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号"2546541656596",excel会自动变成科学计数法... 弄过好几次都没有解决,最 ...

最新文章

  1. postman test 脚本
  2. java工程师需要的技能_Java工程师需要掌握哪些技能?
  3. UNIX再学习 -- 网络与网络协议
  4. Java中field的覆写_Java中方法的覆写
  5. python tkinter 背景色改变不了_python – 在Tkinter中动态更改小部件背景颜色
  6. [eBook] SQL 2008
  7. python中字典长度可变吗_python中列表长度可变吗
  8. 怎么实现hover_web前端CSS实现一个粒子动效的按钮
  9. 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
  10. 《数学之美》—PageRank
  11. FORTAN中一个表达式多行
  12. 2020年微信视频号数据分析生态趋势调查报告
  13. Ubuntu20.04安装搜狗输入法指南
  14. 【115】StrokeIt相关操作
  15. VMware添加共享硬盘
  16. 行存储(Row-Based)和列存储(Column-Based)
  17. mysql怎么创建出生日期表_如何在MySQL中从出生日期开始生成数字序列
  18. java gif等比例缩放_对gif动图进行缩放等处理(java)
  19. BPM流程建模开发详解
  20. 2020年度开发者工具Top 100名单!

热门文章

  1. C# Socket网络编程(附赠练手小项目)
  2. 计算机经典推荐(44本)
  3. STM32MP1系列教程连载-硬件设计篇1:初识STM32MP1系列微处理器
  4. c语言程序设计 第三版 哈工大,C语言程序设计_哈工大(3):选择结构程序设计.pdf...
  5. 使用Region类获取系统中国家及区域的ISO编码
  6. 基于.NET的体育用品网站
  7. Deep QLearning算法详解(强化学习 Reinforcement Learning)
  8. 程序员鼓励师太刺激了,鼻血喷了半斤,代码一会儿就写完了...
  9. Unity3D保存一张1080p(200W像素)以上的大图片 并打印
  10. 大厦智慧楼宇整体建设方案(面向IBMS的智慧大楼解决方案)