首页 > 解决方案 > 如何在 Beanio Xml 中将数字格式转换为字符串

问题描述

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

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

标签: xmlbean-io

解决方案


这只是我怀疑这里发生的事情的一些背景。

您看到的行为实际上是 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 中的“数据导入向导”。请参阅thisthisthis以获得一些可能的选项。如果你谷歌它还有很多。


推荐阅读