Ich versuche, eine Excel-Datei mit XLDR zu lesen, und ich frage mich, ob es eine Möglichkeit gibt, die Zellformatierung in Excel-Datei zu ignorieren, und importieren Sie alle Daten als Text? HierLesen numerischer Excel-Daten als Text mit xlrd in Python
ist der Code, den ich für weit bin mit:
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()
Dieser Code ist funktional, aber es gibt bestimmte Felder, wie eine Postleitzahl, die als Zahlen importiert werden, so dass sie die Dezimalstelle Null Suffix. Gibt es beispielsweise in der Excel-Datei eine Postleitzahl '79854', wird diese als '79854.0' importiert.
Ich habe versucht, eine Lösung in diesem xlrd spec zu finden, war aber nicht erfolgreich.
xlrd meldet, was es findet. Die einzigen "ganzzahligen Werte" in Excel sind Gleitkommazahlen mit einem Nullbruchteil. Excel und seine Benutzer haben einfach nicht das Konzept einer Ganzzahl als separaten Typ. Die Ganzzahlen, die in einigen RK-Zelleneinträgen in einer XLS-Datei enthalten sind, sind lediglich Artefakte der Serialisierung, und xlrd konvertiert sie korrekt in Gleitkommazahlen. –