我正在尝试使用POI库从excel工作表中读取精确的字符串值。问题是,要求用户显式地将单元格类型设置为文本是不可接受的,因此excel会自动将数字输入转换为数值。
当我试图将值作为字符串返回时,出现以下问题:
-
我正在尝试使用
Cell.getStringValue()
函数。它抛出一个异常,因为我的字段被隐式地设置为一个数字类型字段。 -
我正在检查字段类型,如果我注意到这恰好是一个数字字段,我将其转换为具有
Double.toString
或Cell.toString()
的字符串,我的字段通过使用小数转换,即使它是一个四舍五入值。例如,我在字段中写入数字"1"。它自动转换为1数字值。当我试图返回字符串值时,我得到了"1.0"字符串值,这是有问题的。
是否有一种方法可以在这种情况下获得原始字符串?在尝试了这个之后,我能想到的唯一解决方案是禁止在用户输入中使用小数。
我认为ms excel在这方面是有损的。例如,如果您在单元格中输入00123
,它将自动转换为123
。这发生在使用POI读取数据之前,因此不幸的是POI无法访问原始值。
我认为唯一的选择是在向单元格中输入数据之前将单元格格式设置为string。
很烦人!