Чтение числовых данных Excel в виде текста с использованием xlrd в Python

Я пытаюсь читать файл Excel с помощью xlrd, и мне интересно, есть ли способ игнорировать форматирование ячейки, используемую в файле Excel, и просто импортировать все данные в виде текста?

Вот код, который я использую далеко:

import xlrd xls_file = 'xltest.xls' xls_workbook = xlrd.open_workbook(xls_file) xls_sheet = xls_workbook.sheet_by_index(0) raw_data = [['']*xls_sheet.ncols for _ in range(xls_sheet.nrows)] raw_str = '' feild_delim = ',' text_delim = '"' for rnum in range(xls_sheet.nrows): for cnum in range(xls_sheet.ncols): raw_data[rnum][cnum] = str(xls_sheet.cell(rnum,cnum).value) for rnum in range(len(raw_data)): for cnum in range(len(raw_data[rnum])): if (cnum == len(raw_data[rnum]) - 1): feild_delim = '\n' else: feild_delim = ',' raw_str += text_delim + raw_data[rnum][cnum] + text_delim + feild_delim final_csv = open('FINAL.csv', 'w') final_csv.write(raw_str) final_csv.close() 

Этот код является функциональным, но есть определенные поля, такие как zip-код, которые импортируются как числа, поэтому они имеют суффикс с десятичной точностью. Например, есть ли почтовый индекс «79854» в файле Excel, он будет импортирован как «79854.0».

Я попытался найти решение в этой спецификации xlrd , но не увенчался успехом.

  • Чтение / разбор файлов Excel (xls) с помощью Python
  • Конвертер xls в csv
  • Получить формулу из ячейки Excel с помощью python xlrd
  • В python удаляет строки из файла excel с помощью xlrd, xlwt и xlutils
  • Какую библиотеку я должен использовать для написания XLS из Linux / Python?
  • Использование xlrd для чтения файла Excel xls, содержащего символы китайского и / или хинди
  • Чтение файла csv из python
  • JSON конвертирует в XLS в Python
  • 2 Solutions collect form web for “Чтение числовых данных Excel в виде текста с использованием xlrd в Python”

    Это потому, что целочисленные значения в Excel импортируются как плавающие в Python. Таким образом, sheet.cell(r,c).value возвращает float. Попробуйте преобразовать значения в целые числа, но сначала убедитесь, что эти значения были целыми числами в Excel, начиная с:

     cell = sheet.cell(r,c) cell_value = cell.value if cell.ctype in (2,3) and int(cell_value) == cell_value: cell_value = int(cell_value) 

    Это все в спецификации xlrd .

    Я знаю, что это не часть вопроса, но я бы избавился от raw_str и напишу непосредственно на ваш csv. Для большого файла (10 000 строк) это сэкономит массу времени.

    Вы также можете избавиться от raw_data и просто использовать один для цикла.

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