Pergunta

Primeiro e acima de tudo:obrigado por qualquer ajuda antecipadamente.Eu sou um total de programação do principiante, e o meu código vai refletir isso.Eu vou tentar descrever o que eu estou tentando fazer e exibir o código.Novamente, obrigado pelo seu tempo e explicações.

O objetivo: Eu estou querendo ter o python abrir um arquivo do excel (output.xls), e a entrada de um valor (no caso, 'texto de teste') para a próxima linha disponível nesse documento.Que eu tenha tentado usar um loop 'while', e um 'se' instrução para conseguir este feito.Embora nem retornar erros, tanto deles não conseguem mover-se corretamente a saída passado a segunda linha.Aqui está o que eu tenho.

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)

O que eu estou tentando dizer abaixo -ENQUANTO- a célula não está em branco (tipo 6) e, em seguida, adicionar uma linha e repita.Ou seja:Continue indo até que você bata uma linha em branco na quarta coluna.

while cell.ctype != 6:
    row = row + 1

ws.write(row,4,a)

E aqui, eu estou esperando para confirmar os resultados.

print cell.ctype
rb.save('output.xls')

Independentemente disso, quando eu executar o código, ele não parece ter passado a primeira linha.É como se o código diz, "grande, a primeira célula não é o tipo de seis," mas não consegue passado.Apesar de horas de pesquisa na net, eu não consigo encontrar uma razão do porquê.

Qualquer ajuda / orientação é muitíssimo apreciado.

--- EDITAR ---

Veja aqui os erros que eu estou recebendo para a sugestão de respostas.O erro é idêntico.

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
Foi útil?

Solução

Você nunca mover para a próxima célula.Basta alterar a variável row não influência cell.Tente este código em vez disso:

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

Outras dicas

Você avançar índice de linha - mas você não leia uma nova célula, a célula permanece o mesmo, e você inserir um loop infinito

while cell.ctype != 6:
    row = row + 1
    cell = sheet.cell(row,4)

deve funcionar

EDITAR:

Você está recebendo a execução de linhas - facilmente corrigido

try:
    while cell.ctype != 6:
        row = row + 1
        cell = sheet.cell(row,4)
except IndexError:
    <do something>

Pessoalmente, eu tenho um sentimento de que o seu correr muito rápido - você está tentando obter muito profundo, sem ter de aprender o básico

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top