Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Excel中显示长数字?_C#_Excel - Fatal编程技术网

C# 如何在Excel中显示长数字?

C# 如何在Excel中显示长数字?,c#,excel,C#,Excel,我必须构建一个C#程序,生成CSV文件并放入长数字(在我的程序中作为字符串)。问题是,当我在Excel中打开此CSV文件时,数字如下所示: 1234E+或12345600000(数字末尾为0) 我如何保留数字的格式?如果我以文本文件的形式打开文件,则数字格式正确 提前感谢。将这些长数字格式化为字符串,方法是在前面加一个“(撇号)或用它制作一个公式:=“1234567890123”你不能。Excel存储15位精度的数字。如果您不介意不能从Excel中对数字执行计算,您可以将它们存储为文本,所有数字

我必须构建一个C#程序,生成CSV文件并放入长数字(在我的程序中作为字符串)。问题是,当我在Excel中打开此CSV文件时,数字如下所示:

1234E+或12345600000(数字末尾为0)

我如何保留数字的格式?如果我以文本文件的形式打开文件,则数字格式正确


提前感谢。

将这些长数字格式化为字符串,方法是在前面加一个“(撇号)或用它制作一个公式:=“1234567890123”

你不能。Excel存储15位精度的数字。如果您不介意不能从Excel中对数字执行计算,您可以将它们存储为文本,所有数字都将显示出来

当我生成要导入Excel的数据时,如果我想控制数据的显示方式,我不会生成CSV文件。相反,我编写了一个Excel文件,在其中适当地设置了单元格的属性。我不知道是否有一个库可以在C#中为您这样做,而不需要在生成文件的机器上安装Excel,但这是一个需要研究的问题。

正如其他人所提到的,您可以强制数据为字符串。最好的方法是=“1234567890123”。=使单元格成为公式,引号使封闭值成为Excel字符串文字。这将显示所有数字,甚至超过Excel的数值精度限制,但单元格(通常)不能直接用于数值计算

如果需要数据保持数字,最好的方法可能是创建一个原生Excel文件(.xls或.xlsx)。在解决方案中可以找到各种方法

如果您不介意使用数千个分隔符,那么还有一个技巧可以使用,那就是让您的C#程序插入数千个分隔符并将值括在引号中:“1234567890123”。不要包含前导=(因为这将强制它成为字符串)。请注意,在本例中,引号用于保护CSV中的逗号,而不是用于指定Excel字符串文字。

我的两分钱:
我认为认识到“数据”和“格式”之间的区别很重要。在本例中,您试图将这两个文件都存储在一个纯数据文件中。从其他答案可以看出,这将改变数据的性质。(换句话说,会将其转换为字符串。CSV文件是一个只包含数据的文件。您可以在这里或那里使用一些技巧将格式与数据合并,但在我看来,这实际上会通过将其与非数据值合并而损坏数据:即:“格式”。

如果您确实需要能够存储格式信息,我建议,如果您有时间开发它,您可以切换到一种能够将格式信息与数据分开存储的文件类型。听起来这个问题很适合XML电子表格解决方案。通过这种方式,您不仅可以指定数据,还可以键入和您选择使用的任何格式。

逗号技术似乎只适用于15位精度,之后它将变为零。但是,至少它不是科学记数法。请竖起大拇指,看看=“1234564…”不过,诀窍非常有效!我必须记住这一点。撇号在excel中可见,但公式诀窍非常有效。