2013-01-31 17 views

risposta

1

Leggendo il codice sorgente sembra che non ci sia un tale metodo per rimuovere direttamente le righe: ci sono solo metodi per aggiungerle o il metodo .resize() per ridimensionare il foglio di lavoro. Quando si tratta di ottenere il numero di righe, c'è un metodo .row_count() che dovrebbe fare il lavoro per voi.

+0

Grazie per la risposta .. ho Knowe che non esiste un metodo per rimuovere/eliminare i record e nel secondo punto, row_count dà numero o righe compresi i dati vuoti ma voglio solo il conteggio di quelle righe che hanno dati – Chintan

+0

Quindi la tua domanda non è sufficientemente dettagliata. In tal caso, è possibile scorrere su ogni riga, verificare se contiene dati e contarli se lo fa. – SpankMe

+0

Grazie ancora, ma supponiamo che ci siano 1000 record (compresi i dati vuoti) nel foglio di calcolo e per controllare tutte le righe una per una .... ci vuole troppo tempo ... non funziona per me ... – Chintan

1

È possibile specificare esattamente come si desidera eliminare le righe/i record? Sono nel mezzo di un foglio? Parte inferiore? Superiore?

Avevo una situazione in cui volevo cancellare tutti i dati tranne le intestazioni una volta che l'avevo elaborato. Per fare questo ho appena ridimensionato il foglio di lavoro due volte.

#first row is data header to keep  
worksheet.resize(rows=1) 
worksheet.resize(rows=30) 

Questa è una soluzione di forza bruta semplice per pulire un foglio intero senza eliminare il foglio di lavoro.

righe contare con dati

Un modo sarebbe quello di scaricare i dati in un oggetto JSON utilizzando get_all_records() quindi controllare la lunghezza di tale oggetto. Questo metodo restituisce tutte le righe sopra l'ultima riga non vuota. Restituirà le righe vuote se una riga dopo di essa non è vuota, ma non contiene spazi vuoti.

+0

Ho trovato questa risposta davvero utile. e la velocità è la cosa migliore al riguardo. – Ayoub

3

Dalla versione gspread 0.5.0 (dicembre 2016) è possibile rimuovere una riga con delete_row().

Ad esempio, per eliminare una riga con indice 42, si fa:

worksheet.delete_row(42) 
+0

Sto provando delete_row (15) su un foglio di calcolo con 1000 righe, e ancora dopo 10 minuti è in esecuzione. Si prevede che ci vorrà tanto? Quando si elimina una riga, fa qualche copia incolla delle righe sottostanti? – apadana

Problemi correlati