2017-02-21 4 views
1

도움이 필요하십니까? 간단한 작업처럼 보입니다 - 특정 스프레드 시트 셀에서 값을 가져 와서 요약해야합니다. 그러나 나는 첫 번째 단계 에서조차 실패했다. 처음에는 모듈에 문제가 있다고 생각했는데 (openpyxl이 정기적으로 업그레이드되고 뭔가 놓쳤습니다) xlrd 모듈이 잘못된 결과를 생성했습니다! 여기에 코드입니다 : 대신 정수 (예를 들어, 22)의, 그 결과xlrd & openpyxl 잘못된 셀 값을 가져옵니다 (Excel)

import xlrd, xlwt 
wb = xlrd.open_workbook(r"E:\Projects_working (11).xlsx") 
sheet = wb.sheet_by_name('Language Process') 
for i in range(1, 100): 
    cellVal = sheet.cell(i, 14).value #need to find "5" in column 14 
     if type(cellVal) == float and cellVal == 5.0: #need to read corresp. 
      print(sheet.cell(i, 11).value)   #values в column 11 

코드는 플로트 42782.61458로 끝납니다. WB = load_workbook ("file.xlsx":

가 Orignially 나는 openpyxl 모듈을 사용하고 loadede 통합 문서에 DATA_ONLY = TRUE 플래그를 추가 (등, 42782.66146, 42781.38542, 42781.42708 다른 값은 유사한 잘못) data_only = True). 이 코드는 동일한 결과를 산출합니다. 이 깃발이 없으면 모든 수식은 이상한 수식이됩니다. = B32 + ((M32-B32)/2), = B41 + ((M41-B41)/2) 등이 있습니다. 다음은이 수식의 코드입니다 (플래그 없음).

import openpyxl 
wb = openpyxl.load_workbook(r"E:\Projects_working (11).xlsx") 
sheet = wb.get_sheet_by_name('Language Process') 
for i in range(1, 100): 
    cellVal = sheet.cell(row=i, column=14).value 
     if type(cellVal) == float and cellVal == 5.0: 
      print(sheet.cell(row=i, column=11).value) 

그리고 여기는 경우, 파일에 대한 링크입니다 : https://docs.google.com/spreadsheets/d/1bFhkEs8JTVWCgZoW5_9lQ1q_T0gtijBhuywr6OVpfGc/edit?usp=sharing

답변

0

당신은 원시 날짜 시간 값의 Excel의 버전과 같은 모양을 읽고있는 데이터입니다. 아마도 열을 잘못 계산했기 때문입니다 (즉, 잘못된 열 인덱스가 주어진 경우).

+0

존, 넌 최고 야! 고맙습니다. (약간의 까다로운 이유를 찾고 있었지만, 실수는보기 싫었습니다!) –

관련 문제