C# 将带注释的int转换为long

C# 将带注释的int转换为long,c#,sql,.net,excel,long-integer,C#,Sql,.net,Excel,Long Integer,我有一个程序可以读取Excel文件列表,这些文件的列顺序不同,我有一个代码可以识别电话号码字段并从每个Excel工作表中读取。 电话号码总是以下面的语法9.7150135791e+011返回,我不能执行SELECT FORMATpart_no,因为我猜不出列的索引或名称 我想用C端的一些东西来解决这个问题,我指的是一些转换方法,将我收到的东西转换成以前的东西。 有什么想法吗?将其解析为double,然后将其转换为long 或者,您可以简单地重新格式化字符串: var result = "9.71

我有一个程序可以读取Excel文件列表,这些文件的列顺序不同,我有一个代码可以识别电话号码字段并从每个Excel工作表中读取。 电话号码总是以下面的语法9.7150135791e+011返回,我不能执行SELECT FORMATpart_no,因为我猜不出列的索引或名称

我想用C端的一些东西来解决这个问题,我指的是一些转换方法,将我收到的东西转换成以前的东西。 有什么想法吗?

将其解析为double,然后将其转换为long

或者,您可以简单地重新格式化字符串:

var result = "9.7150135791e+011".Split("e")[0]; // ...etc.

或者你可以,现在,将原始Excel列格式化为一个字符串,这样你就不必经历所有这些繁琐的操作。

这不是一个int。从技术上讲,我想是的,但Excel可能会以其他方式存储它,比如浮点。是的,你需要一艘更大的船,比如Int64。把它作为一个字符串保存,然后去掉它。和e+011。将电话号码设为整数似乎并不实际。@FelixCastor为True,只需将其作为字符串读取并拆分。实际上,每个号码在excel中都被格式化为有效的电话号码971501357909,但当我使用OLEDB连接读取它时,它会更改为9.7150135791e+011,因此您可以看到忽略+011不会将其返回到不起作用的原始状态。是的,但是我不确定结果是否是一个有效的电话号码。让excel格式化数据而不使用e符号会更好吗?给一个整数而不是一个实数?应该能够格式化一个excel列,这样做很容易。这应该是一个电话号码?“我们为什么要把它当作一个数字来操纵呢?”罗伯特哈维正是我的想法。它一开始就不应该是那种格式。应该在excel中进行调整,以便直接使用。实际上,该号码在excel中的格式为有效电话号码971501357909,但当我使用OLEDB连接读取时,它将更改为9.7150135791e+011,因此您可以看到忽略+011不会将其返回原始状态!
var result = "9.7150135791e+011".Split("e")[0]; // ...etc.