Не удалось прочитать данные из Excel, как это видно на рабочем столе

Я работаю над excel workbook . Я использую скрипт python для работы в workbook . Но есть два вопроса:

1) Существуют некоторые ячейки, которые имеют integer значения. Когда я читаю эти значения и помещаю прочитанное значение в файл отчета ( .txt ), он добавляет .0 с номером. Например. если есть значение 6, оно дает 6.0, когда оно не должно это делать. Я читал, что нет ничего как integer в excel. Тем не менее, у меня есть 1000 параметров и, таким образом, я не могу преобразовать непосредственно все из них в integer используя некоторую функцию python потому что это может преобразовать значения, которые также являются float .

2) И когда я читаю boolean TRUE и FALSE, он дает мне 1 и 0. Я хочу получить любой text я вижу в книге excel на рабочем столе. Мне не нужны такие преобразования.

Я использую xlrd для операций excel в python .
Скажите, пожалуйста, что я должен сделать, чтобы решить эту проблему?
Примечание. Мой лист excel содержит более 100 листов, и я не могу изменить «true или false» с «1 и 0» и т. Д.

  • Значение Python xlrd Named Range
  • python xlrd неподдерживаемый формат или поврежденный файл.
  • Python: xlrd выдающиеся даты от поплавков
  • error: не удалось создать '/Library/Python/2.7/site-packages/xlrd': Permission denied
  • Чтение объединенных ячеек в Excel с помощью Python
  • Python xlrd: как преобразовать извлеченное значение?
  • Использование xlrd для чтения файла Excel xls, содержащего символы китайского и / или хинди
  • Преобразование Python Float в String без потери точности
  • 2 Solutions collect form web for “Не удалось прочитать данные из Excel, как это видно на рабочем столе”

    xlrd дает вам все ваши числа как float, а ваши логические значения – целые. Как вы их распечатываете, это просто вопрос с питоном.

    Я надеюсь, вы уже знаете, какие ячейки содержат логические значения. (Если вы этого не сделаете, проверьте ctype ячейки, как показано в ответе Массимо Фуччилло, см. Комментарий @ JohnY ниже для подробностей.) Вы можете печатать логические ячейки как True и False , просто печатая bool(var) вместо var :

     >>> var = 1 >>> print bool(var) True 

    При записи в файл это будет выводиться как строка 'True' (соответственно 'False' ), как и предполагалось.

    Поскольку Excel не различает int и float, мы будем предполагать, что integer вы подразумеваете любое число, дробная часть которого равна нулю. Когда python печатает float, он добавляет .0 чтобы сохранить информацию о том, что это float.

    Простейшим решением было бы подавить это, если вы форматируете свои номера для вывода с помощью «% g»:

     >>> "%g" % 6.0 '6' 

    Однако "%g" по умолчанию будет округлять реальные цифры до шести значащих цифр (хотя вы можете указать другую точность).

     >>> "%g" % 2500.03 '2500.03' >>> "%g" % 2500.003 '2500' 

    Таким образом, более безопасно, если вы сами обнаруживаете интегральные значения и распечатываете их соответственно:

     if int(var) == var: print int(var) else: print var 

    Я рекомендую сделать это таким образом.

    для логического вопроса вы можете проверить тип ctype:

     for rx in range(ws.nrows): for cx in range(ws.ncols): print ws.cell(rx,cx).value, ws.cell(rx,cx).ctype 

    если исходная ячейка excel имеет значение «TRUE» FALSE, значение ctype равно 4

    Python - лучший язык программирования в мире.