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