C#保存数据到Excel,为什么身份证号显示不正常?
SQLServer2005数据库表里面涉及的身份证字段是char(18),用DataGridView能正常显示,但是点击保存按钮保存成Excel时,身份证号不能正常显示,...
SQL Server2005数据库表里面涉及的身份证字段是char(18),用DataGridView能正常显示,但是点击保存按钮保存成Excel时,身份证号不能正常显示,但是最后一位是X的就能全部显示,为什么呢?设置单元格格式也不行,后面几位全是0,怎么解决呢?
展开
5个回答
展开全部
需要更改身份证的数据格式。
1.问题展示。电子表格中输入身份证号码以后,出现4.3102E+17。
2.原因分析。出现此问题的原因是单元格式没有设置好,软件认为是个很大的数字,所以采用了科学记数法来显示。特别要注意的是,18位数字的身份证科学记数法以后,最后的三位数字都变成了000。因此不要偷懒,以为不改单元格式也可以查看到身份证号码。
3.打开电子表格文件以后,选中身份证的整列,点右键出现“设置单元格格式”选项。
4.点“设置单元格格式“以后进入”数字“选项框,从中选中”文本“后点确定。
5.此时,再次输入身份证号码,将会正确显示。并且在该单元格左上角有个绿色小三角形的标记,表示文本格式已经设置好。
6.如果不需要对整列设置,只对某一个单元格进行设置,方法也是样。
7.身份证号码位数多,需要将整列拉宽才能完全显示。拉宽的方法是,将鼠标停留在需要拉宽列(最上面)的界限处,出现一个往两边的箭头标记时就可以拉宽和缩小操作。
展开全部
最后一位是X的,系统认为是一串字符,末位是数字的,系统将身份证号认为是一串数字(数值很大的数字),所以采用科学计数法将其表示为 3.20683E+17的形式
修改Excel单元格的格式为文本型就可以正常显示了
修改Excel单元格的格式为文本型就可以正常显示了
追答
是你在改的时候,系统又将 3.028E+17作为了基础字符串,所以你改为文本型后,仍然是3.028E+17
http://javacrazyer.iteye.com/blog/894758,博主写的非常详细,从原理到解决方法都有了
思路还是那样,设置单元格格式为“文本型”
下面直接阐述下真正的解决方法:
1 //创建workBook
2 HSSFWorkbook wb = new HSSFWorkbook();
3 //创建一个样式
4 HSSFCellStyle cellStyle = wb.createCellStyle();
5 //创建一个DataFormat对象
6 HSSFDataFormat format = wb.createDataFormat();
7 //这样才能真正的控制单元格格式,@就是指文本型,具体格式的定义还是参考上面的原文吧
8 cellStyle.setDataFormat(format.getFormat("@"));
9
10 //具体如何创建cell就省略了,最后设置单元格的格式这样写
11 cell.setCellStyle(cellStyle);
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-06-04
展开全部
存成字符串格式就好啦,或者你导入到Excel时,身份证号前都加一个 单引号 ' 就可以正常显示了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
超过位数了,必须先把单元格格式改为文本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将身份证号的数据类型改为文本,并将显示身份证号的那个单元格的数据格式设置为文本
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询