紧急求助,在线等,是个字符串问题(20分)

  • 主题发起人 主题发起人 batconv
  • 开始时间 开始时间
B

batconv

Unregistered / Unconfirmed
GUEST, unregistred user!
我把数据读入excel时发现,excel会自动把字符串缩短,如读入“199901010011600132”,单元格显示出来的却是“1.9999E+18”,如何把它还原成“199901010011600132”?如何设置方能使其不变形?我已经把列宽设置的足够大了。
 
在你的字符串前面加一个'(单引号)来解决好了,这样就是字符串操作了,你那么长的数字写入excel的时候,被当作数字处理了,所以采用了科学计数的方式显示了.这是笨办法,望高手来点好的办法.
 
谢谢cqwty,可是这样会在前面有个明显的可视字符,有没有不影响美观的不可视字符可以达到同样要求,或者有什么其它办法,望不吝赐教!
 
你的excel是模板嗎?是的話可以把模板的格式換為數字格式....
如果不是的話..那就要動態設置了..
 
谢谢大家参与!
我找到了一个办法,就是先用StrToIntDef或Trystrtoint来判断准备写入的字符串是否可转化为数字格式,然后用ExcelApp.ActiveSheet.Cells.Item.numberformatlocal:='@'; 来固定格式,这样就可以了。
但是我又出现个问题,就是StrToIntDef或Trystrtoint都不支持太长的字符串,如“199901010”它可以判断符合数字格式,但“199901010011600132”它就认为不符合了,但显而易见两个都是数字啊,而且我已经把首尾和中间的空格都去掉了呀!郁闷中...
 
哈哈,这个都为难你了啊?你把这个字符串打断撒,分为几次来判断,如果每个部分都能转化成数字,那是不是连接起来也是数字嘛?当然注意判断小数点号哈,首先判断这个字符串里面是不是最多只有一个小数点符号,如果是,那就打断成合适的长度,用你上面的函数判断好了撒.这样问题解决了吧.换种方法,只要结果一样,那就行了.爱因斯坦不是也把鸡蛋砸破,然后解决鸡蛋立起来的问题嘛,打破一下常规的思维,嘿嘿!
 
现在的关键问题已经不再是cqwty兄所说的问题了,而是长度太长了后连StrToIntDef或Trystrtoint都不支持了,这样的话我就无从判断输入的字符串是数字还是文本了[:(]
 
你的意思是不是说输入的过长了,导致你用上面两个函数无法判断?如果是,你仔细看我上面介绍的办法,就是将输入的字符串打断成几个部分啊,如果每个部分都可以用你的两个函数转成数字,那合起来是不是就可以了?这个难道不行嘛?
 
在读到表里之前,你先把该字段设为字符型数据,这样excel就不回把它当作数字了.
 
to ruoxi_shuai:
问题是我之前并不知道这个字段是数字格式,而且这个字段并不全是数字
to cqwty:
谢谢,你的方法虽然麻烦点,但是可行。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部