как конвертировать числовой формат в строку в Beanio Xml - PullRequest
0 голосов
/ 10 октября 2018

У меня есть строка, равная 0100, когда я генерирую файл Excel, я нахожу это поле равным 100.я хочу сохранить первое значение

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

1 Ответ

0 голосов
/ 10 октября 2018

Это просто некоторая предыстория того, что, как я подозреваю, происходит здесь.

На самом деле вы видите поведение Excel, которое угадывает, каким должен быть тип данных для столбца, и поскольку здесь нет буквенно-цифровых или каких-либо специальныхСимволы в вашем столбце 'sube' он попытается преобразовать эти значения в числовое значение, и поэтому он удаляет начальный ноль, потому что начальный ноль в десятичном (основание 10) числе не меняет фактическое значение числа.

Одним из решений может быть указание BeanWriter всегда указывать ваши выходные данные.Это заставит Excel обрабатывать все ваши столбцы и данные как «текст», и тогда не следует пытаться интерпретировать и угадывать тип данных для столбцов.

См. Свойства формата потока CSV документация для дополнительных опций, но вы можете установить alwaysQuote = "true"

alwaysQuote - boolean - если установлено значение true, текст поля всегда заключается в кавычки.По умолчанию поле заключено в кавычки, только если оно содержит разделитель, кавычку или символы новой строки.BeanWriter, Marshaller

В свой xml-файл отображения BeanIO добавьте

<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.См. это , это и это для нескольких возможных вариантов.Есть еще много, если вы гуглите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...