Estoy tratando de leer en un archivo Excel usando xlrd, y me pregunto si hay una manera de ignorar el formato de celda utilizado en el archivo Excel, e importar todos los datos como ¿texto?Lectura de datos numéricos de Excel como texto usando xlrd en Python
Aquí está el código que estoy utilizando para el momento:
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()
Este código es funcional, pero hay ciertos campos, como por ejemplo un código postal, que se importan como números, por lo que tienen el cero decimal sufijo. Por ejemplo, si hay un código postal de '79854' en el archivo Excel, se importará como '79854.0'.
He intentado encontrar una solución en este xlrd spec, pero no tuvo éxito.
xlrd informa de lo que encuentra. Los únicos "valores enteros" en Excel son flotantes con una parte de fracción cero. Excel y sus usuarios simplemente no tienen el concepto de un entero como un tipo separado. Los enteros que están contenidos en algunos registros de celda RK en un archivo XLS son simplemente artefactos de la serialización y xlrd los convierte correctamente en flotantes. –