xlrd를 사용하여 Excel 파일을 읽으려고합니다. Excel 파일에서 사용되는 셀 서식을 무시하고 모든 데이터를 다음과 같이 가져 오는 방법이 있는지 궁금합니다. 본문? 여기 파이썬에서 xlrd를 사용하여 숫자 엑셀 데이터를 읽음
내가 지금까지에 대한 사용하고있는 코드입니다 :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()
이 코드는 작동하지만, 같은 숫자로 가져 우편 번호와 같은 특정 필드이있다, 그래서 그들은 소수 제로가 접미사. 예를 들어 Excel 파일에 '79854'의 우편 번호가 있으면 '79854.0'으로 가져옵니다.
나는이 xlrd spec에서 해결책을 찾으려고했지만 실패했습니다.
xlrd는 발견 한 내용을보고합니다. Excel의 유일한 "정수 값"은 소수부가 0 인 부동 소수점입니다. Excel과 그 사용자는 정수의 개념을 별도의 유형으로 가지고 있지 않습니다. XLS 파일의 일부 RK 셀 레코드에 포함 된 정수는 직렬화의 아티팩트 일 뿐이며 xlrd는이를 올바르게 float로 변환합니다. –