在使用 c# 从 excel 中读取大于 12 位的数字时,数字被转换为零

Posted

技术标签:

【中文标题】在使用 c# 从 excel 中读取大于 12 位的数字时,数字被转换为零【英文标题】:while reading number greater than 12 digits from excel using c#,number get converted to zero 【发布时间】:2013-03-18 13:08:38 【问题描述】:

我正在尝试使用 c# 使用以下查询从 excel 文件中读取长度大于 12 位的数字

 "select Format([F1], 'Number') as Code";

但我只正确得到了 12 位数字,其余数字都转换为零。为什么会这样??

示例:787767786546347 从 excel 文件中读取时我得到的是 787767786546000

【问题讨论】:

c#变量是什么类型。对于所需的 c# 类型,您的 execel 编号是否很大? 我正在将值放入数据集中 我是你得到的实际价值是多少?也许最好显示/说明这一点,以便其他人可以看到您正在使用的 12 位数字 @DJKRAZE 添加了一个例子 787767786546347是什么国家代码?你有整数吗?那为什么要在F1 中使用Format 函数呢? 【参考方案1】:

根据 MSDN:

Excel 遵循关于如何存储和计算浮点数的 IEEE 754 规范。因此,Excel 在一个数字中只存储 15 位有效数字,并将第 15 位之后的数字更改为零。

要解决此问题,请将单元格设置为文本格式。然后该单元格最多可显示 1,024 个字符。

http://support.microsoft.com/kb/269370

【讨论】:

我理解这个问题的方式,即 excel 数字是正确的,但是在转换为 c# 时他错过了数字。 ya das rite 但限制是 15 ,但我只能读取 12 位数字,其余的都是零,为什么??

以上是关于在使用 c# 从 excel 中读取大于 12 位的数字时,数字被转换为零的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 读取 Excel 工作表,其中表格已合并单元格

怎样在C#中判断从界面选择的日期是在当前日期之前

使用 C# 从 Excel/Access 读取和匹配数据

使用列名从excel中读取数据并插入到C#中的SQL表中

无法从 C# 中的 excel 文件中读取数值

C#从Excel中读取数据为空了,该怎么解决啊?