Я использую org.eclipse.persistence.internal.oxm.record.XMLReader и org.apache.poi.xssf.eventusermodel.XSSFSheetXMLHandler.XSSFSheetXMLHandler для анализа электронных таблиц. В данном конкретном случае использования это столбец, который мы будем называть буквенно-цифровыми номерами деталей. Это всегда работало нормально, но сегодня пользователь пытается загрузить лист, содержащий некоторые номера деталей, например «88E0044». Анализатор выдает исключение NumberFormatException для значения. Excel первоначально перейдет на экспоненциальную запись. Принудительное использование текста в Excel с ведущим апострофом или форматированием не помогает. Есть идеи, как это исправить, кроме чтения таблицы по-другому? Я хочу, чтобы значение просто считывалось как строка, а не пыталось преобразовать его в число.
Код: Выделить всё
XMLReader sheetParser = SAXHelper.newXMLReader(new XmlOptionsBean());
ContentHandler handler = new XSSFSheetXMLHandler(styles, null, strings, new SheetHandler(), getFormatter(), false);
sheetParser.setContentHandler(handler);
sheetParser.parse(sheetSource);
Я вижу это исключение только во время отладки, и в отладчике нет трассировки стека. Это NumberFormatException с сообщением «Для входной строки: «88E0044». Похоже, что синтаксический анализатор считывает строки партиями по 100. Он возвращает строки до ошибки, а затем считывает следующую партию из 100.
Подробнее здесь:
https://stackoverflow.com/questions/786 ... t-a-number