Целые числа из файлов excel становятся плавающими?

Я использую xlrd для чтения данных из файлов excel.

Для целых чисел, хранящихся в файлах, скажем 63 , xlrd интерпретирует его как xlrd number типа.

Почему xlrd не xlrd распознать 63 как целое число?

Предположим, что sheet.row(1)[0].value дает нам 63.0 . Как я могу преобразовать его обратно в 63 .

6 Solutions collect form web for “Целые числа из файлов excel становятся плавающими?”

Если посмотреть на различные типы ячеек в документации , кажется, что для ячеек нет целочисленного типа, они просто плавают. Следовательно, именно по этой причине вы возвращаете float, даже когда вы написали целое число.

Чтобы преобразовать float в целое число, просто используйте int :

 >>> int(63.0) 63 >>> int(sheet.row(1)[0].value) 63 

Excel обрабатывает все числа как float. В общем, неважно, your_number % 1 == 0.0 ли your_number % 1 == 0.0 или нет.

Пример: A1 = 63.0, B1 = 63, C1 = INT(A1), A2 = TYPE(A1), B2 = TYPE(B1), C2 = TYPE(C1) Вы увидите, что TYPE() возвращает 1 в каждом случае ,

Из справки Excel:

 If value is TYPE returns Number 1 Text 2 Logical value 4 Error value 16 Array 64 

xlrd сообщает, что он находит. xlrd не xlrd свой вход, прежде чем подвергать его вам. Преобразование столбца из (62.9, 63.0, 63.1, etc) (62.9, 63, 63.1, etc) Будет представлять собой бессмысленную трату времени процессора для меня.

Ответ jcollado – это хорошо, если у вас есть все записи на листе excel в виде чисел, которые являются целыми числами. Но предположим, что у вас есть число, которое является поплавком, вы всегда можете поставить условие проверки, например:

  if i==int(i): //checking for the integer: print int(i) // solving your problem and printing the integer else: print i //printing the float if present 

Надеюсь, вы найдете это полезным 🙂

Мне напоминают об этом камне из xlrd docs:

Даты в таблицах Excel

На самом деле таких вещей нет. У вас есть числа с плавающей запятой и благочестивая надежда.

То же самое относится к целым числам. Возможно, минус благочестивая надежда.

Я написал код, который пытается преобразовать числа в строки, поскольку они отображаются в Excel. Подход работает, по крайней мере, для целых чисел и чисел с двумя цифрами после запятой. Он должен работать и для многих других форматов.

Идея, скриншоты и код здесь: http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/

Добавьте Apostrophe в качестве префикса к номерам, сохраненным в листе Excel. Делая это, целые числа могут быть импортированы как целые числа, но не как числа с плавающей запятой.

Это работало для меня без каких-либо проблем.

  • Python xlrd: как преобразовать извлеченное значение?
  • Получить формулу из ячейки Excel с помощью python xlrd
  • Чтение файла XML XML .xls с помощью pandas
  • Как установить NULL для IntegerField вместо установки 0?
  • Как вы читаете файлы excel с помощью xlrd на Appengine
  • Доступ к листам с использованием метода xlwt 'get_sheet'
  • запись в существующую книгу с помощью xlwt
  • Получение URL-адреса из гиперссылок Excel-листа в Python с помощью xlrd
  • Как определить, является ли ячейка пустой при чтении файлов Excel с использованием библиотеки xlrd?
  • Поиск строки и получение значения строки и столбца
  • Ошибка импорта Eclipse XLRD, XLWT
  • Python - лучший язык программирования в мире.