Próbuję odczytać w pliku Excel przy użyciu xlrd, i zastanawiam się, czy istnieje sposób, aby zignorować formatowanie komórek używane w pliku Excel, i po prostu zaimportować wszystkie dane jako tekst?Czytanie liczbowych danych Excela jako tekstu przy użyciu xlrd w Pythonie
Oto kod używam za daleko:
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()
Kod ten jest funkcjonalny, ale istnieją pewne obszary, takie jak kod pocztowy, które są importowane w postaci liczb, więc mają zero dziesiętny przyrostek. Na przykład, istnieje kod pocztowy "79854" w pliku Excel, zostanie zaimportowany jako "79854.0".
Próbowałem znaleźć rozwiązanie w tym xlrd spec, ale nie udało się.
xlrd zgłasza, co znajduje. Jedynymi "wartościami całkowitymi" w Excelu są zmiennoprzecinkowe z częścią zerową. Excel i jego użytkownicy po prostu nie mają pojęcia liczby całkowitej jako oddzielnego typu. Liczby całkowite, które są zawarte w niektórych rekordach komórek RK w pliku XLS, są jedynie artefaktami serializacji, a xlrd poprawnie konwertuje je na zmienne. –