Esportare molti minireport in excel

di il
7 risposte

Esportare molti minireport in excel

Ciao
Ho un problema di velocità nell'esportare dati da access verso excel.
Ho una tabella con circa 4000 record, e mi servono 2 livelli di grouping
Ogni livello ha una sua intestazione, un subtotale ed una sua formattazione in excel
Faccio un esempio, diverso dal caso reale ma vale uguale
LOMBARDIA
CITTA Popolazione
Milano 1000
Bergamo 2000
Brescia 800
Totale 3800

PIEMONTE
CITTA Popolazione
Torino 1000
Cuneo 400
Asti 300
Totale 1700

Per esportare in excel eseguo delle query annidate e le esporto nel foglio excel. Dopo ogni esportazione "annidata" eseguo la formattazione delle celle. Nel caso di esempio:
Esporto la regione e formatto la riga
Esporto le città e formatto le righe
Eseguo la sommatoria da codice in excel e formatto la riga
Passo alla successiva regione

Il processo funziona bene ma e' estremamente lento.
Esportare direttamente un report access sarebbe immediato ma poi complicato per formattarlo correttamente in automatico.

Come potrei quindi rendere l'esportazione mooolto piu' veloce? La mia esportazione ora, per 4000 record, impiega circa 10 minuti.

7 Risposte

  • Re: Esportare molti minireport in excel

    Non puoi fare un Template di Excel e riempirlo...?
    Io uso un Temnplate XLT, preformattato disposto su 10 Fogli, in quanto ogni foglio fa cose diverse, sia Grafici che Calcoli tabellari.
    Riempio un Foglio Dati in modo NON FORMATTATO poi nei Fogli Formattati recupero i valori, abilito il calcolo Automatico alla fine.
    Parlo di una Tabella abbastanza piccola, 40 Colonne per 30 Righe, ma i grafici sono discretamente impegnati, ed il tempo non è male, poco più di 1 secondo.
  • Re: Esportare molti minireport in excel

    Uso anche io un template per tutti quei campi che richiedono formattazione standard.
    In questo caso pero' il numero di colonne, la posizione delle righe di intestazione, la quantità di righe di dettaglio e la posizione delle righe di riepilogo sono variabili. Per questo vengono gestite caso per caso.
    Avevo provato anche, in parte come fai tu, ad usare in excel un foglio solo per i dati e poi con una tabella pivot riepilogarli con le dovute formattazioni e raggruppamenti. Pero' non riesco ad ottenere la formattazione richiesta dal cliente.

    Modificando l'esempio sopra che forse e' troppo semplice, diciamo che invece che regioni parliamo di stati, per ogni stato elenco tutte le città e per ogni città conto tutti quelli che si chiamano con lo stesso nome.

    Europa
    Italia
    Milano
    Mario 10
    Giuseppe 30
    Aldo 10
    ...ecc
    ....Tutte le città italiane
    Francia
    ....Tutte le città francesi
    ..ecc
  • Re: Esportare molti minireport in excel

    Uso anche io un template per tutti quei campi che richiedono formattazione standard.
    In questo caso pero' il numero di colonne, la posizione delle righe di intestazione, la quantità di righe di dettaglio e la posizione delle righe di riepilogo sono variabili. Per questo vengono gestite caso per caso.
    Avevo provato anche, in parte come fai tu, ad usare in excel un foglio solo per i dati e poi con una tabella pivot riepilogarli con le dovute formattazioni e raggruppamenti. Pero' non riesco ad ottenere la formattazione richiesta dal cliente.

    Modificando l'esempio sopra che forse e' troppo semplice, diciamo che invece che regioni parliamo di stati, per ogni stato elenco tutte le città e per ogni città conto tutti quelli che si chiamano con lo stesso nome.

    Europa
    Italia
    Milano
    Mario 10
    Giuseppe 30
    Aldo 10
    ...ecc
    ....Tutte le città italiane
    Francia
    ....Tutte le città francesi
    ..ecc
  • Re: Esportare molti minireport in excel

    Parto anche io da un template per tutti quei campi che richiedono formattazione standard.
    In questo caso pero' poi il numero di colonne, la posizione delle righe di intestazione, la quantità di righe di dettaglio e la posizione delle righe di riepilogo sono variabili. Per questo vengono gestite caso per caso.

    Avevo provato anche, in parte come fai tu, ad usare in excel un foglio solo per i dati e poi con una tabella pivot riepilogarli con le dovute formattazioni e raggruppamenti. Pero' non riesco ad ottenere la formattazione richiesta dal cliente.

    Modificando l'esempio del primo posto, che forse e' troppo semplice, diciamo che invece che regioni parliamo di stati, per ogni stato elenco tutte le città e per ogni città conto tutti quelli che si chiamano con lo stesso nome.

    Europa
    Italia
    Milano
    Mario 10
    Giuseppe 30
    Aldo 10
    ...ecc
    ....Tutte le città italiane
    Francia
    ....Tutte le città francesi
    ..ecc

    Parto da una tabella che contiene tutte queste informazioni.
    Filtro con una distinct tutti gli stati, poi ciclo ogni stato e ottengo tutte le città e poi per ogni città ottengo tutti i nomi.
    Ogni volta che ho un "gruppo" città/nomi lo carico in excel, lo formatto ed eseguo il subtotale.
    Vedo che il ciclo tra una città e l'altra città porta via un sacco di tempo.

    Magari, invece che accedere ogni volta ad excel si potrebbero generare due xlm (dati e schema) e poi "creare" l'excel.
    Il processo potrebbe essere molto più' veloce. Pero' non saprei come fare.
  • Re: Esportare molti minireport in excel

    Aggiungo un dettaglio.
    Uso CopyFromRecordset per copiare i dati dal recordset "città" all'excel. Magari non e' il metodo piu' rapido.
    Forse sarebbe meglio sarebbe ciclare tutti i record "stato" ed al variare di una "città" eseguire la formattazione ed il subtotale?
    Cosi' eliminerei un livello di annidamento
  • Re: Esportare molti minireport in excel

    Hai inserito 3 messaggi uguali, credo tu li possa eliminare.

    Per un'altra applicazione, che appunto ha Colonne e righe variabili, non uso il CopyFromRecordset ma non perchè poco performante, anzi, ma perchè non gestibile, ciclo il RS ed inserisco Rientri/SubTotali e formattazione riga per riga.
    Questo tool esporta poche righe(siamo nell'ordine di massimo 200) e massimo un centinaio di colonne, ma deve ricreare una Gerarechia usando i rientri.
    Questa procedura che nella sostanza Formatta prima l'Header e poi inizia a scrivere riga per riga formattandola in base ad una struttura predefinita, impiega circa 5÷7 secondi.

    Dubito si possa velocizzare oltremodo.
  • Re: Esportare molti minireport in excel

    Ops sorry
    Usando il tab mi deve essere partito qualche messaggio ma non so come cancellarli...

    Ho ciclato il rs senza usare il CopyFromRecordset ed effettivamente ci guadagno molto, ovviamente solo perche' eseguo meno query.
    Purtroppo le performance sono ancora scarse ma sicuramente molto meglio.
Devi accedere o registrarti per scrivere nel forum
7 risposte