我有一个等于 0100 的字符串,当我生成 excel 文件时,我发现这个字段等于 100 . 我想保留第一个值
<field name="sube" type="string" />
这只是我怀疑这里正在发生的事情的一些背景。
您看到的行为实际上是 Excel,它会猜测列的数据类型应该是什么,并且由于"sube"列中没有字母数字或任何特殊字符,它将尝试将这些值转换为数值,从而删除前导零,因为十进制(基数 10(数字中的前导零不会更改数字的实际值。
一种解决方案可能是告诉BeanWriter
始终引用您的输出数据。然后,这将强制 Excel 将所有列和数据视为"文本",然后不应尝试解释和猜测列的数据类型。
有关更多选项,请参阅 CSV 流格式属性文档,但您可以设置alwaysQuote = "true"
alwaysQuote - 布尔值 - 如果设置为 true,则始终将字段文本括起来。由 默认情况下,仅当字段包含分度计 引号或换行符。豆作家,马歇尔
在您的 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中的"数据导入向导"。请参阅此,此和此以获取一些可能的选项。如果你用谷歌搜索,还有很多。