이 파이썬 루프가 다음 사용 가능한 Excel 행으로 출력하지 못하는 이유는 무엇입니까?
문제
첫 번째와 최상위 : 사전에 도움을 주셔서 감사합니다. 나는 총 프로그래밍 초보자입니다. 그리고 내 코드는 그것을 반영합니다. 나는 내가하고자하는 것을 묘사하고 코드를 표시하려고 시도 할 것입니다. 다시 한번, 당신의 시간과 설명에 감사드립니다.
목표 : 파이썬을 기존 Excel 파일 (output.xls)을 열고 다음 사용 가능한 행렬에 값을 입력하십시오 (이 경우 '텍스트 테스트'). 그 문서에서. 나는 'while'루프를 사용하려고 시도했고, 'if's is this이 완료되도록 시도했습니다. 반환 오류가 아니더라도 두 번째 줄을 지나면 출력을 올바르게 이동하지 못합니다. 여기에 내가 가진 것입니다.
from xlrd import open_workbook
from xlutils.copy import copy
import xlwt
wb = open_workbook('output.xls',formatting_info=True)
sheet = wb.sheet_by_name("sheet 1")
#This is the simple test text here.
a = 'just a test'
rb = copy(wb)
ws = rb.get_sheet(0)
row = 0
cell = sheet.cell(row,4)
.
아래에서 아래에서 말하려고하는 것은 --While - 셀이 비어 있지 않은 경우 (유형 6) 행에 하나를 추가하고 반복하십시오. IE : 네 번째 열에서 빈 행을 누르기까지 계속하십시오.
while cell.ctype != 6:
row = row + 1
ws.write(row,4,a)
.
및 여기, 결과를 확인하기를 원합니다.
print cell.ctype
rb.save('output.xls')
.
코드를 실행하면 첫 번째 줄을 지나치게하지 않는 것 같습니다. 코드가 "훌륭한 첫 번째 셀이 6 가지가 아닙니다"라고 말합니다. 그러나 과거에는 얻지 못합니다. 그물을 찾는 시간에도 불구하고, 왜 그 이유를 찾을 수 없습니다.
도움 / 안내도 엄청나게 높이 평가됩니다.
--- 편집 ---
여기에 제안 된 응답으로받는 오류가 있습니다. 오류는 동일합니다.
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Folder", line 19, in <module>
cell = sheet.cell(row,4)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 395, in cell
xfx = self.cell_xf_index(rowx, colx)
File "C:\Python27\lib\site-packages\xlrd\sheet.py", line 421, in cell_xf_index
xfx = self._cell_xf_indexes[rowx][colx]
IndexError: list index out of range
. 해결책
결코 다음 셀로 이동하지 않습니다.변수 변수를 변경하면 row
가 영향을 미치지 않습니다.대신이 코드를 사용해보십시오.
cell = sheet.cell(row,4)
while cell.ctype != 6:
row = row + 1
if row >= sheet.nrows:
break
cell = sheet.cell(row,4) # <-- actually move the "pointer" in the excel sheet
. 다른 팁
행 색인을 진행하지만 새 셀을 읽지 않으므로 셀이 동일하게 유지되며 끝없는 루프를 입력합니다
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
.
가 작동해야합니다
편집 :
행이 부족합니다. 쉽게 수정되었습니다
try:
while cell.ctype != 6:
row = row + 1
cell = sheet.cell(row,4)
except IndexError:
<do something>
.
개인적으로, 나는 당신이 너무 빨리 달리기를 느끼게합니다 - 당신은 기초를 배우지 않고 너무 깊이있게하려고 노력하고 있습니다