Я обрабатываю электронную таблицу .ods с помощью библиотеки jOpenDocument. Поскольку я обрабатывал строки, все было в порядке, но когда дело доходит до обработки чисел, это боль.
В моем коде я повторяю электронную таблицу и делаю некоторые вычисления на основе значения, принятого ячейкой с индексом x, y. Удивительно, но я не могу получить класс значений, которые я получаю:
BigDecimal ferialestringa;
while (true) {
boolean duplicate = false;
value = (String) sheet.getValueAt(0, count);
System.out.println(sheet.getValueAt(5, count).getClass());
ferialestringa = (BigDecimal) sheet.getValueAt(5, count);
Этот фрагмент распечатывает:
class java.math.BigDecimal
class java.lang.String
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal
at InspectTwitter.main(InspectTwitter.java:78)
Вы можете видеть, что значение принадлежит двум разным классам.
Если я попытаюсь разобрать возвращенный объект в строку, я также получу другое исключение ClassCastException:
class java.math.BigDecimal
Exception in thread "main" java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
at InspectTwitter.main(InspectTwitter.java:78)
Обратите внимание, что на этот раз класс кажется просто BigDecimal.
Я пытался найти документацию, но в этом javadoc доступен только Sheet.getValueAt(String). (Однако я нашел этот метод в учебниках, и, похоже, он очень хорошо работает со строками). Что я должен делать?