Domanda

Prima di tutto: grazie per qualsiasi aiuto in anticipo. Sono un novizio di programmazione totale, e il mio codice lo rifletterà. Tenterò a descrivere cosa sto tentando di fare e visualizzare il codice. Ancora una volta, grazie per il tuo tempo e spiegazioni.

L'obiettivo: Voglio avere Python Aprire un file Excel esistente (output.xls) e immettere un valore (in questo caso, "Testo del testo") alla riga successiva disponibile in quel documento. Ho tentato di usare un loop 'while' e una dichiarazione 'If' per farlo. Sebbene né restituire errori, entrambi non riescono a spostare correttamente l'uscita oltre la seconda riga. Ecco cosa ho.

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)
.

Quello che sto cercando di dire qui sotto è -while - la cella non è vuota (tipo 6), quindi aggiungi uno alla riga e ripetere. Cioè: continua fino a quando non hai colpito una riga vuota nella quarta colonna.

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

ws.write(row,4,a)
.

E qui, spero di confermare i risultati.

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

A prescindere, quando eseguo il codice, non sembra superare la prima riga. È come se il codice dice: "Ottimo, la prima cella non è di tipo sei", ma non lo passa. Nonostante le ore di ricerca in rete, non riesco a trovare una ragione per cui.

Qualsiasi aiuto / orientamento è tremendamente apprezzato.

--- Modifica ---

Ecco gli errori che sto ricevendo alle risposte suggerite. L'errore è identico.

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
.

È stato utile?

Soluzione

Non si sposta mai nella cella successiva.Basta cambiare la variabile row non influenza cell.Prova invece questo codice:

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
.

Altri suggerimenti

Advancew Row Index - ma non hai letto una nuova cella, quindi la tua cella rimane la stessa e inserisci un loop senza fine

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

dovrebbe funzionare

Modifica:

Stai ricevendo le righe - facilmente fisse

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

Personalmente, ho la sensazione che la tua corsa troppo veloce - stai cercando di diventare troppo profondo senza le basi di apprendimento

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top