我使用OpenXML SDK来解析.xlsx文件。OpenXml SDK为大数返回科学值
当我在Excel文件中有非常大的数字时,即344230125015305000
,OpenXML将它转换为科学版本,即3.4423012501530502E+17
。这很奇怪,因为“完整”值存在于Excel文件中,这意味着它没有被截断,并且它应该在Cell对象中的某个地方可用。
任何建议者居多。
UPDATE:
@AlexeiLevenkov建议我看看XML文件,并将其显示在值存储在科学的形式。有趣的是,Excel仍然显示完整的表单。
实例:
344110425109461000 -> 3.4411042510946099E+17
344230125015305000 -> 3.4423012501530502E+17
344770124807291000 -> 3.4477012480729101E+17
344770224905172000 -> 3.4477022490517197E+17
试图隐蔽回满形式,即
(long)Double.Parse("3.4411042510946099E+17", CultureInfo.InvariantCulture)
返回一个不正确的值(344110425109460992
对于上面的片段)。
向该值添加单引号前缀可修复问题(另一个指示器,表示完整表单值隐藏在某处),但这不是此方案的解决方案,因为我尝试构建自动处理的用户上传文件。
您的科学记数法版本具有比您在Excel中读取的**更高的**精确度? – 2014-09-30 14:26:33
据我所知,它有一个较低的精度?尝试转换它会返回一个不同的数字,即'(long)Double.Parse(“3.4411042510946099E + 17”,CultureInfo.InvariantCulture)'是'344110425109460992'。 – 2014-09-30 14:36:55
XML是文本文件...首先检查打开并查看内部,看看是否确实值您正在寻找。 – 2014-09-30 14:40:18