Использование Apache POI для управления файлами Excel

Я пытаюсь написать тест, используя инструмент тестирования Marathon с Jython. Я использую Apache POI для чтения/записи файлов Excel. Я очень новичок в Jython и Apache POI, поэтому этот вопрос может показаться очень простым для некоторых, но я не могу пройти мимо него. Я использую функцию getCell() в интерфейсе Cell, и она отлично захватывает ячейку, но содержимое, которое она печатает для меня, не то, что мне нужно. Мне нужно целочисленное значение, но оно возвращает число с плавающей запятой.

for r in range(1, rowsBusiness):
    row = sheetBusiness.getRow(r)
    idNum = row.getCell(0) # it is returning double values here
    print idNum
    print idNum.getStringCellValue()

Я согласен с тем, что он возвращает двойные значения, если я могу преобразовать их в строку или целое число, потому что тестируемое приложение преобразует строку в целое число или выдает ошибку, но я не могу понять, как преобразовать от двойного и избавиться от десятичной точки. Функция getStringCellValue() не работает с idNum. Он просто оставляет его пустым, и тест зависает. Я также отформатировал файл Excel так, чтобы он принимал только целые значения в ячейках, на которые я ссылаюсь. Так, например, в файле excel у меня есть значение 1 (отформатировано так, чтобы не содержать десятичных точек), но idNum печати возвращает 1,0

Любые полезные советы о том, как получить это в строку или целое число? Или любые другие идеи, которые могут способствовать успешному обходному пути?


person Nick L    schedule 17.12.2013    source источник


Ответы (1)


Формат файла Excel имеет только несколько основных типов, таких как числовой и строковый. Большинство чисел хранятся как значения с плавающей запятой + правила форматирования. Вот почему вы возвращаете двойное число, а не целое — это просто то, что живет в файле!

Apache POI предоставляет класс DataFormatter, который принимает значение с плавающей запятой и строку формата и делает все возможное, чтобы вернуть строку числа, как показано в Excel. В вашем случае вызов, скорее всего, даст то, что вам нужно.

person Gagravarr    schedule 18.12.2013