【问题标题】:How to show long numbers in Excel?如何在 Excel 中显示长数字?
【发布时间】:2009-05-24 19:48:42
【问题描述】:

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

1234E+ 或 1234560000000(数字结尾为0)

如何保留数字的格式?如果我将文件作为文本文件打开,则数字格式正确。

提前致谢。

【问题讨论】:

    标签: c# excel


    【解决方案1】:

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

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

    如果您不介意使用千位分隔符,还可以使用另一种技巧,即让您的 C# 程序插入千位分隔符并将值括在引号中:“1,234,567,890,123”。不要包含前导 = (因为这将迫使它成为一个字符串)。请注意,在这种情况下,引号用于保护 CSV 中的逗号,而不是用于指定 Excel 字符串文字。

    【讨论】:

    • 逗号技术似乎只适用于 15 位精度,之后它变为零。然而,至少它不是科学计数法。
    • 为 ="1234564..." 点赞,不过,效果很好!我必须记住这一点。
    【解决方案2】:

    将这些长数字格式化为字符串,方法是在前面放置一个 '(撇号)或从中创建一个公式:="1234567890123"

    【讨论】:

    • 撇号在 excel 中变得可见,但公式技巧很棒。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      当我生成要导入 Excel 的数据时,如果我想控制数据的显示方式,我不会生成 CSV 文件。相反,我写出一个 Excel 文件,其中适当设置了单元格的属性。我不知道是否有一个库可以在 C# 中为您执行此操作,而无需在生成文件的机器上安装 Excel,但它值得研究。

      【讨论】:

        【解决方案5】:

            我的两分钱:
        我认为重要的是要意识到“数据”和“格式”之间存在差异。在此示例中,您试图将两者都存储在纯数据文件中。正如您从其他答案中可以看出的那样,这将改变数据的性质。 (换句话说,导致它被转换为字符串。CSV 文件是仅数据文件。您可以在这里和那里做一些技巧来将格式与数据合并,但在我看来,这实质上是通过合并破坏了数据它具有非数据值:即:“格式化”。
        如果您确实需要能够存储格式信息,我建议,如果您有时间开发它,请切换到能够将格式信息与数据分开存储的文件类型。听起来这个问题很适合 XML 电子表格解决方案。通过这种方式,您不仅可以指定数据,还可以指定数据的类型和您选择使用的任何格式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-10-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多