在 Excel 中打开 CSV 文件会将一些带有数字(长度>20)的字符串字段转换为科学记数法

Opening CSV file in Excel converts some string fields with numbers(length>20) to scientific notation

我正在使用 opencsv 编写一个 csv 文件。我有一个字符串类型的 csv 字段,只能包含大小为 20 的字母数字。有时该值仅包含数字(即)而没有字母。

在记事本中打开该文件时会提供完整的值 <66688888888831111111>,在 excel 中打开同一文件时会将字符串转换为:<6.66888888888311E+019>

这是预期的行为还是有任何方法可以避免转换为科学记数法。

Excel 中的数字是浮点数。如果您打开包含值

的 CSV
66688888888831111111

它将显示为

6.66889E+19

如果将其格式化为文本,则显示不会改变。如果将单元格格式化为数字(防止显示更改为指数表示法),结果为

66688888888831100000

这表示低位尾数位被截断,有效位数(14)表示内部表示是64位long,你可以通过在这个online converter.

情况变得更糟。由于 CSV 是一种纯文本格式,无法存储单元格属性,因此无法告诉 Excel 将该列作为文本处理而不是将其解释为数字。即使您在 CSV 文件中用引号括起来,Excel 仍会将其解释为数字。如果您随后将加载的 sheet 保存为 CSV,您将获得截断后的值。