Excel 시트에서 셀 값을 가져 와서 계산하고 새 시트에 출력을 작성하려고합니다. 나는 계속 ErrorType을 얻는다. 나는 이전에 성공적으로 코드를 실행하지만, 그냥이 부분을 추가했습니다, 따라서 코드는 아래에 증류수되었습니다Openpyxl : 셀 값 조작
import openpyxl
#set up ws from file, and ws_out write to new file
def get_data():
first = 0
second = 0
for x in range (1, 1000):
if ws.cell(row=x, column=1).value == 'string':
for y in range (1, 10): #Only need next ten rows after 'string'
ws_out.cell(row=y, column=1).value = ws.cell(row=x+y, column=1).value
second = first #displaces first -> second
first = ws.cell(row=x+y, column=1).value/100 #new value for first
difference = first - second
ws_out.cell(row=x+y+1, column=1).value = difference #add to output
break
이 형식 오류 메시지 오류 :
first = ws.cell(row=x+y, column=1).value)/100
TypeError: unsupported operand type(s) for /: 'NoneType' and 'int'
나는이 언급되는 가정 ws.cell 값 (100)는 각각, 그래서 나는 또한 시도했다 : 제기 어떤
first = int(ws.cell(row=x, column=1))/100 #also tried with float
:
TypeError: int() argument must be a string or a number
필자는 모든 열의 셀이 숫자로만 구성되었음을 확인했습니다. 또한 openpyxl의 cell.data_type은 'n'을 반환합니다 (아마도 문서에서 알 수있는 한 숫자에 해당하는 것으로 추정됩니다).
나는 또한 더 간단한 수학을 테스트했으며 동일한 오류가 있습니다.
내 검색 모두는 일반적으로 이와 같이 정상적으로 작동하는 openpyxl을 가리키는 것으로 보입니다. 내가 잘못된 것을하고 있습니까? 아니면 이것은 단순히 모듈의 한계입니까? 그렇다면 프로그래밍 방식 해결 방법이 있습니까?
보너스로 코드를보다 간결하게 작성하는 방법에 대한 조언을 많이 주시면 감사하겠습니다. 나는 이제 막 시작했는데, 이와 같은 아이디어를 작성하는 더 깨끗한 방법이 있어야한다고 생각합니다.
파이썬 3.3, openpyxl-1.6.2, 윈도우 7
요약
CFI의 대답은 내가 약간 다른 해결 방법을 사용하지만, 내가, 그것을 알아낼 수있었습니다. 원본 파일을 검사 할 때 빈 셀 하나가있었습니다 (이전에 놓친 것). 내가 다시 사용되기 때문에 더 산발적 빈 셀에 열을 나중에이 코드를, 내가 사용 : 지정된 셀이 비어 있다면
if ws.cell(row=x+r, column=40).data_type == 'n':
second = first #displaces first -> second
first = ws.cell(row=x+y, column=1).value/100 #new value for first
difference = first - second
ws_out.cell(row=x+y+1, column=1).value = difference #add to output
따라서, 그것을 무시하고 건너 뜁니다.
항상 인용 된 오류와 일치하는 코드를 게시하십시오. 'row = x + r'은 코드에 존재하지 않는 변수'r'을 가리 킵니다. – cfi
감사합니다. 오류 메시지가 업데이트되었습니다. – Jonathan