이 파이썬 루프가 다음 사용 가능한 Excel 행으로 출력하지 못하는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com//questions/21016246

문제

첫 번째와 최상위 : 사전에 도움을 주셔서 감사합니다. 나는 총 프로그래밍 초보자입니다. 그리고 내 코드는 그것을 반영합니다. 나는 내가하고자하는 것을 묘사하고 코드를 표시하려고 시도 할 것입니다. 다시 한번, 당신의 시간과 설명에 감사드립니다.

목표 : 파이썬을 기존 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>
.

개인적으로, 나는 당신이 너무 빨리 달리기를 느끼게합니다 - 당신은 기초를 배우지 않고 너무 깊이있게하려고 노력하고 있습니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top