在做项目的时候遇到一个bug,当 编号(仅针对纯数字)长度达到一定长度,比如超过11位之后,导出Excel后就转换成了 10的幂次方。
这是Excel特有的转换,而且当数字的位数达到15,以后的数字就会全部转化成0,造成精度的缺失。
这显然是不符合要求的。
原始的赋值代码是这样的。
dr["编号"] = dt.Rows[i]["编号"].ToString();
读取DataTable的每一行,然后赋值,很常规的操作。
解决方案:
在导出的编号前面加上一个 英文引号(')
就像这样
dr["案件公文号"] = "'" + (dt.Rows[i]["案件公文号"]).ToString();
那么导出到文档之后显然会保留原有的编号,因为这相当于是将纯数字转换成了字符串。而字符串显然是不会出现这个问题。
那么好处是:
当我们双击单元格,并点击回车的时候,前面的引号就会消失,转化成一个绿色的标记,这显然是可以接受的。
如图
标签:10,Rows,数字,C#,导出,Excel,编号 From: https://www.cnblogs.com/AduBlog/p/17602080.html