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

Java 在Excel中打开CSV文件会将一些带有数字(长度大于20)的字符串字段转换为科学记数法,java,excel,opencsv,Java,Excel,Opencsv,我正在使用opencsv编写一个csv文件。我有一个csv字段,它是字符串类型,只能有大小为20的字母数字。有时,该值仅包含数字(即不包含字母) 在记事本中打开该文件时会提供完整值,在excel中打开该文件时会转换字符串,如下所示: 这是预期的行为,还是有任何方法可以避免转换为科学记数法。Excel中的数字是浮点数。如果打开包含该值的CSV 66688888888831111111 它将显示为 6.66889E+19 如果将其格式化为文本,则显示不会更改。如果将单元格格式化为数字(防止将显示

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

在记事本中打开该文件时会提供完整值<6668888888311111>,在excel中打开该文件时会转换字符串,如下所示:


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

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

66688888888831111111
它将显示为

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

66688888888831100000
这表示低阶尾数位的截断,有效位数(14)表示内部表示为64位
,您可以在此处输入值


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

我可以更正,Excel在处理CSV写入方面确实比Google Sheets差得多。将以下内容导入到工作表和Excel中,然后返回到CSV中,然后再返回,会产生截然不同的结果:
=“123456123456789012345678890123456”,“12345612356789012345678890123456”