graficar exportar datos python excel csv xls xlrd

exportar - Lectura de datos numéricos de Excel como texto usando xlrd en Python



exportar datos de python a excel (2)

Intento leer en un archivo de Excel usando xlrd, y me pregunto si hay una manera de ignorar el formato de celda utilizado en el archivo de Excel, e importar todos los datos como texto.

Aquí está el código que estoy usando para ahora:

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 un código postal, que se importan como números, por lo que tienen el sufijo de cero decimal. Por ejemplo, si hay un código postal de ''79854'' en el archivo Excel, se importará como ''79854.0''.

Intenté encontrar una solución en esta especificación xlrd , pero no tuve éxito.


Sé que esto no forma parte de la pregunta, pero me deshace de raw_str y escribo directamente a su csv. Para un archivo grande (10,000 filas) esto ahorrará mucho tiempo.

También puede deshacerse de raw_data y simplemente usar uno para bucle.


Esto se debe a que los valores enteros en Excel se importan como flotantes en Python. Por lo tanto, sheet.cell(r,c).value devuelve un flotante. Intente convertir los valores en enteros, pero primero asegúrese de que esos valores sean enteros en Excel para comenzar:

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)

Está todo en la especificación xlrd .