如何在Beanio Xml中将数字格式转换为String

时间:2018-10-10 10:25:08

标签: xml bean-io

我有一个等于0100的字符串,当我生成Excel文件时,我发现此字段等于100。 我想保留第一个值

<field name="sube" type="string" />

1 个答案:

答案 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中的“数据导入向导”。有关一些可能的选项,请参见thisthisthis。如果您用Google搜索的话,还有很多。