Recuperare l'ultima riga utilizzata in Excel

di il
7 risposte

Recuperare l'ultima riga utilizzata in Excel

Buongiorno a tutti,

ho una procedura che legge una cartella Excel,

vorrei ricavare l'ultima riga scritta in Excel, così da impostare il contatore del ciclo per ottimizzare la elaborazione.

Nelle mie ricerche, ho trovato come recuperare l'ultima colonna, ma non riesco a trovare come recuperare l'ultima riga.

PS. ho pensato in alternativa di cercare la formula che replicasse la sequenza di tasti Ctrl+Fine (ma senza successo)

Un caro saluto a tutti

7 Risposte

  • Re: Recuperare l'ultima riga utilizzata in Excel

    Come recuperi l'ultima colonna?

  • Re: Recuperare l'ultima riga utilizzata in Excel

    TExcelFile.ColCount

    Oppure

     TExcelFile.ColCountOnlyData

  • Re: Recuperare l'ultima riga utilizzata in Excel

    Per le righe parti da un range e scendi fino all'ultima

    Esempio

    Range("A1").End(xlDown).Row

    (naturalmente utilizzando l'oggetto Excel)

    P.S. se devi usare Excel perchè non scrivi direttamente il codice vba nel file? A che ti serve Delphi?

  • Re: Recuperare l'ultima riga utilizzata in Excel

    14/04/2023 - Robert59 ha scritto:


    vorrei ricavare l'ultima riga scritta in Excel, così da impostare il contatore del ciclo per ottimizzare la elaborazione.

    Nelle mie ricerche, ho trovato come recuperare l'ultima colonna, ma non riesco a trovare come recuperare l'ultima riga.

    Dato che usi i componenti TMS Software, dovrebbe bastare chiamare il metodo GetRowCount() dell'oggetto TExcelFile, passando l'indice del foglio che ti interessa, come indicato nella documentazione.

    Tieni anche in considerazione i suggerimenti della guida relativi alle performance: ad esempio, una volta individuata l'ultima riga del foglio, conviene usare ColCountInRow() per determinare il numero effettivo di colonne per quella riga specifica (se la logica che devi implementare lo consente), in quanto chiedere il numero di colonne applicate genericamente all'intero foglio risulta “leggermente” più lento.

    15/04/2023 - oregon ha scritto:


    P.S. se devi usare Excel perchè non scrivi direttamente il codice vba nel file? A che ti serve Delphi?

    Se devo costruire un applicativo che importa dati da file (o gli esporta verso file) in formato Excel, non diventa automaticamente più vantaggioso usare VBA, in primis per le “enormissime” differenze tra i due linguaggi, in secondo luogo perché magari l'applicazione potrebbe non richiedere espressamente Excel installato per funzionare (dipende anche dal tipo di applicazione), e terzo perché non sempre i clienti che desiderano esporta in Excel tollerano che l'applicazione sia parte integrante del foglio o che venga distribuita con esso.

    Questo vale in linea generale: nel caso di specie qui, se l'autore della discussione è uno sviluppatore Delphi, mi pare naturale che voglia continuare a lavorare in Delphi, se possibile. :)

    Ciao!

  • Re: Recuperare l'ultima riga utilizzata in Excel

    Questa volta non sono d'accordo.

    Nello specifico, mi pare di capire che l'op non abbia esperienza di programmazione con nessun linguaggio in particolare, sicuramente conosce qualcosa di Delphi e nulla di VBA, utilizza un foglio Excel erroneamente come un “DB” perché non sa fare altrimenti.

    In generale questo è il modus operandi del 90% di chi usa Excel per tenere tabelle e dari destrutturati che vuole utilizzare nelle proprie applicazioni, siano scritte in Delphi, C# o Vbnet.

    Praticamente il 100% ha excel installato e i file excel li utilizza distribuendoli oppure ottenendoli da colleghi che, a loro volta, hanno excel installato.

    Insomma, nello specifico e nella maggioranza dei casi, nessun punto elencato è realmente valido.

  • Re: Recuperare l'ultima riga utilizzata in Excel

    16/04/2023 - oregon ha scritto:


    Nello specifico, mi pare di capire che l'op non abbia esperienza di programmazione con nessun linguaggio in particolare, sicuramente conosce qualcosa di Delphi e nulla di VBA

    TUTTE le discussioni precedenti aperte dall'OP riguardano Delphi, quindi questo è il linguaggio di programmazione che ipoteticamente conosce e sta utilizzando, alla prova dei fatti e non per ipotesi o presunzioni.

    16/04/2023 - oregon ha scritto:


    utilizza un foglio Excel erroneamente come un “DB” perché non sa fare altrimenti

    Può darsi, ed è senz'altro un errore, ma la questione esula dal linguaggio di programmazione utilizzato, in ogni caso.

    16/04/2023 - oregon ha scritto:


    Praticamente il 100% ha excel installato e i file excel li utilizza distribuendoli oppure ottenendoli da colleghi che, a loro volta, hanno excel installato.

    Ma questo non giustifica la necessità di scrivere in VBA al posto di Delphi o di qualsiasi altro linguaggio.
    Io ad esempio, non lo farei mai, salvo requisito esplicito del cliente.

    16/04/2023 - oregon ha scritto:


    Insomma, nello specifico e nella maggioranza dei casi, nessun punto elencato è realmente valido.

    Mi attengo ai fatti: l'OP usa Delphi e vuole leggere file Excel, quindi rispondo su quello.

    Il fatto che debba basare tutto su Excel, che possa passare agevolmente a VBA, che questo passaggio comporti un qualsivoglia tipo di vantaggio rispetto al linguaggio e ai componenti che l'OP sta utilizzando (di alto livello), che questo renda sensato l'uso del file Excel in quanto tale e così via, per me sono pure speculazioni non verificabili, e anche prendendole tutte per buone, non c'è fondamentalmente alcun motivo valido fra queste nell'usare VBA al posto di Delphi (mentre ne esistono parecchi contrari), salvo “embeddare” l'app nella cartella che forse è l'unico benefit e, visto che si parla di Delphi, non vale proprio la candela.

    Ciao! :)

  • Re: Recuperare l'ultima riga utilizzata in Excel

    Ho capito che l'utente usa Delphi, non è questo il focus, non cambierebbe nulla se usasse VB.NET o C#, per me il “suo” rimane un problema legato ad Excel.

    E non è affatto detto che debba risolverlo con VBA (cosa che probabilmente gli faciliterebbe molto il compito dato che quello che evidentemente non conosce è il modello ad oggetti di Excel e non le poche istruzioni di Delphi utilizzate).

    Quello che voglio fargli notare (che va oltre una risposta piatta ad un problema contingente) è che - molto probabilmente - sta sbagliando strada perché, se vuole costruire un applicativo che non gli faccia venire mal di testa, lo fa con Delphi+DB (anche un MDB) oppure con Excel/Access+ Form e VBA.

    Il mio era un consiglio dato a lui, vista la mia esperienza con queste situazioni nei forum, non una imposizione “urbi et orbi” valida per ogni caso e per ogni situazione, distinguendo anche una situazione lavorativa orientata a Clienti da una situazione di lavori “personali” che rimangono nel proprio ambito per fare esperienza.

    In ogni caso, il mondo è bello perchè è vario. 

    Ciao!

    (sottolineo solo il saluto :-) )

Devi accedere o registrarti per scrivere nel forum
7 risposte