我有一个等于0100的字符串,当我生成Excel文件时,我发现此字段等于100。 我想保留第一个值
<field name="sube" type="string" />
答案 0 :(得分:0)
这只是我怀疑这里发生的事情的背景。
您看到的行为实际上是Excel,它猜测列的数据类型应该是什么,并且由于“ sube”列中没有字母数字或任何特殊字符,它将尝试将这些值转换为数字值,然后因此,它删除了前导零,因为十进制(以10为底)数字中的前导零不会更改该数字的实际值。
一种解决方案是告诉BeanWriter
始终引用您的输出数据。然后,这将迫使Excel将您所有的列和数据都视为“文本”,并且不应尝试解释和猜测列的数据类型。
有关更多选项,请参见CSV Stream format properties文档,但是您可以设置alwaysQuote = "true"
alwaysQuote-布尔值-如果设置为true,则始终引用字段文本。通过 默认情况下,仅当字段包含定界符, 引号或换行符。 BeanWriter,Marshaller
在您的BeanIO映射xml文件中添加此
<stream name="myStream" format="csv">
<parser>
<property name="alwaysQuote" value="true" />
</parser>
<!-- The rest of the mapping file content -->
</stream>
另一种选择是控制Excel如何导入csv文件,以将该特定列视为text
而不是number
。为此,请使用Excel中的“数据导入向导”。有关一些可能的选项,请参见this,this和this。如果您用Google搜索的话,还有很多。