Progress Bar

di il
1 risposte

Progress Bar

Ciao a tutti, con il codice che posto di seguito, edito un excel e lo esporto in pdf, sicuramente non è la soluzione migliore ma per quel che devo fare basta e avanza, non è un programma professionale e poi sono riuscito solo in questo modo…. detto questo, visto che impiega qualche secondo nella creazione del file, vorrei mettere una progress bar ma non ho idea del punto preciso dove impiega tanto e dove inserire un qualcosa che scateni la progress bar per dargli una tempistica.

Potete aiutarmi o indirizzarmi? grazie

Di seguito il codice (che non piacerà ah ah ah)

 MyExcel = New Excel.Application
            MyWorkbook = MyExcel.Workbooks.Open(My.Settings.Percorso & "\Fatture.xlsx")
            MyWorkSheet = CType(MyWorkbook.Sheets("Foglio1"), Worksheet) 'Nome del Foglio di Lavoro
            'Intestazione
            MyWorkSheet.Cells(2, 9) = TBnFattura.Text & "/" & CBannoFiscale.Text '(riga, colonna)
            MyWorkSheet.Cells(5, 9) = TBdataFattura.Text '(riga, colonna)
            MyWorkSheet.Cells(12, 3) = TBsociale.Text '(riga, colonna)
            MyWorkSheet.Cells(13, 3) = TBindirizzo.Text '(riga, colonna)
            MyWorkSheet.Cells(14, 3) = TBcittà.Text '(riga, colonna)
            MyWorkSheet.Cells(15, 3) = TBprovincia.Text '(riga, colonna)
            MyWorkSheet.Cells(16, 3) = TBcap.Text '(riga, colonna)
            MyWorkSheet.Cells(17, 3) = TBtelefono.Text '(riga, colonna)
            MyWorkSheet.Cells(18, 3) = TBmail.Text '(riga, colonna)
            MyWorkSheet.Cells(19, 3) = TBpIva.Text '(riga, colonna)
            MyWorkSheet.Cells(20, 3) = TBcfiscale.Text '(riga, colonna)
            'Materiale blocco 1
            MyWorkSheet.Cells(23, 1) = TBq1.Text '(riga, colonna)
            MyWorkSheet.Cells(23, 2) = TBa1.Text '(riga, colonna)
            MyWorkSheet.Cells(23, 3) = TBd1.Text '(riga, colonna)
            MyWorkSheet.Cells(23, 8) = TBp1.Text '(riga, colonna)
            'Materiale blocco 2
            MyWorkSheet.Cells(24, 1) = TBq2.Text '(riga, colonna)
            MyWorkSheet.Cells(24, 2) = TBa2.Text '(riga, colonna)
            MyWorkSheet.Cells(24, 3) = TBd2.Text '(riga, colonna)
            MyWorkSheet.Cells(24, 8) = TBp2.Text '(riga, colonna)
            'materiale blocco3
            MyWorkSheet.Cells(25, 1) = TBq3.Text '(riga, colonna)
            MyWorkSheet.Cells(25, 2) = TBa3.Text '(riga, colonna)
            MyWorkSheet.Cells(25, 3) = TBd3.Text '(riga, colonna)
            MyWorkSheet.Cells(25, 8) = TBp3.Text '(riga, colonna)
            'Materiale blocco 4
            MyWorkSheet.Cells(26, 1) = TBq4.Text '(riga, colonna)
            MyWorkSheet.Cells(26, 2) = TBa4.Text '(riga, colonna)
            MyWorkSheet.Cells(26, 3) = TBd4.Text '(riga, colonna)
            MyWorkSheet.Cells(26, 8) = TBp4.Text '(riga, colonna)
            'Materiale blocco 5
            MyWorkSheet.Cells(27, 1) = TBq5.Text '(riga, colonna)
            MyWorkSheet.Cells(27, 2) = TBa5.Text '(riga, colonna)
            MyWorkSheet.Cells(27, 3) = TBd5.Text '(riga, colonna)
            MyWorkSheet.Cells(27, 8) = TBp5.Text '(riga, colonna)
            'Materiale blocco 6
            MyWorkSheet.Cells(28, 1) = TBq6.Text '(riga, colonna)
            MyWorkSheet.Cells(28, 2) = TBa6.Text '(riga, colonna)
            MyWorkSheet.Cells(28, 3) = TBd6.Text '(riga, colonna)
            MyWorkSheet.Cells(28, 8) = TBp6.Text '(riga, colonna)
            'Materiale blocco 7
            MyWorkSheet.Cells(29, 1) = TBq7.Text '(riga, colonna)
            MyWorkSheet.Cells(29, 2) = TBa7.Text '(riga, colonna)
            MyWorkSheet.Cells(29, 3) = TBd7.Text '(riga, colonna)
            MyWorkSheet.Cells(29, 8) = TBp7.Text '(riga, colonna)
            'Materiale blocco 8
            MyWorkSheet.Cells(30, 1) = TBq8.Text '(riga, colonna)
            MyWorkSheet.Cells(30, 2) = TBa8.Text '(riga, colonna)
            MyWorkSheet.Cells(30, 3) = TBd8.Text '(riga, colonna)
            MyWorkSheet.Cells(30, 8) = TBp8.Text '(riga, colonna)
            'Materiale blocco 9
            MyWorkSheet.Cells(31, 1) = TBq9.Text '(riga, colonna)
            MyWorkSheet.Cells(31, 2) = TBa9.Text '(riga, colonna)
            MyWorkSheet.Cells(31, 3) = TBd9.Text '(riga, colonna)
            MyWorkSheet.Cells(31, 8) = TBp9.Text '(riga, colonna)
            'Materiale blocco 10
            MyWorkSheet.Cells(32, 1) = TBq10.Text '(riga, colonna)
            MyWorkSheet.Cells(32, 2) = TBa10.Text '(riga, colonna)
            MyWorkSheet.Cells(32, 3) = TBd10.Text '(riga, colonna)
            MyWorkSheet.Cells(32, 8) = TBp10.Text '(riga, colonna)
            'Materiale blocco 11
            MyWorkSheet.Cells(33, 1) = TBq11.Text '(riga, colonna)
            MyWorkSheet.Cells(33, 2) = TBa11.Text '(riga, colonna)
            MyWorkSheet.Cells(33, 3) = TBd11.Text '(riga, colonna)
            MyWorkSheet.Cells(33, 8) = TBp11.Text '(riga, colonna)
            'Materiale blocco 12
            MyWorkSheet.Cells(34, 1) = TBq12.Text '(riga, colonna)
            MyWorkSheet.Cells(34, 2) = TBa12.Text '(riga, colonna)
            MyWorkSheet.Cells(34, 3) = TBd12.Text '(riga, colonna)
            MyWorkSheet.Cells(34, 8) = TBp12.Text '(riga, colonna)
            'Materiale blocco 13
            MyWorkSheet.Cells(35, 1) = TBq13.Text '(riga, colonna)
            MyWorkSheet.Cells(35, 2) = TBa13.Text '(riga, colonna)
            MyWorkSheet.Cells(35, 3) = TBd13.Text '(riga, colonna)
            MyWorkSheet.Cells(35, 8) = TBp13.Text '(riga, colonna)
            'Materiale blocco 14
            MyWorkSheet.Cells(36, 1) = TBq14.Text '(riga, colonna)
            MyWorkSheet.Cells(36, 2) = TBa14.Text '(riga, colonna)
            MyWorkSheet.Cells(36, 3) = TBd14.Text '(riga, colonna)
            MyWorkSheet.Cells(36, 8) = TBp14.Text '(riga, colonna)
            'Materiale blocco 15
            MyWorkSheet.Cells(37, 1) = TBq15.Text '(riga, colonna)
            MyWorkSheet.Cells(37, 2) = TBa15.Text '(riga, colonna)
            MyWorkSheet.Cells(37, 3) = TBd15.Text '(riga, colonna)
            MyWorkSheet.Cells(37, 8) = TBp15.Text '(riga, colonna)
            'Materiale blocco 16
            MyWorkSheet.Cells(38, 1) = TBq16.Text '(riga, colonna)
            MyWorkSheet.Cells(38, 2) = TBa16.Text '(riga, colonna)
            MyWorkSheet.Cells(38, 3) = TBd16.Text '(riga, colonna)
            MyWorkSheet.Cells(38, 8) = TBp16.Text '(riga, colonna)
            'Totali
            MyWorkSheet.Cells(40, 9) = TBomaggio.Text '(riga, colonna)
            Dim NOMEpdf As String = TBnFattura.Text + "-" + CBannoFiscale.Text + ".pdf"
            MyWorkSheet.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, My.Settings.Percorso + "\" + NOMEpdf) 'Salva il file in pdf
            MyWorkbook.Close(True, Type.Missing, Type.Missing)
            MyExcel.Quit()

          Grazie

1 Risposte

  • Re: Progress Bar

    08/12/2022 - orione1976 ha scritto:


    visto che impiega qualche secondo nella creazione del file, vorrei mettere una progress bar ma non ho idea del punto preciso dove impiega tanto e dove inserire un qualcosa che scateni la progress bar per dargli una tempistica.

    Innanzitutto, affinché la ProgressBar funzioni, dovrai fare in modo di spostare la logica di generazione del file Excel in un thread parallelo.

    Se la generazione del file avviene nel thread principale, a fronte della gestione di un evento con cui si da inizio al processo, tale thread non potrà elaborare i messaggi in arrivo nella coda, ivi compresi quelli che suggeriscono alla UI di aggiornarsi mostrando i cambiamenti apportati al valore corrente della barra: ne consegue che vedrai solamente la barra vuota, all'inizio, e la troverai direttamente piena una volta completata l'esportazione.

    Puoi provare a familiarizzare con il componente BackgroundWorker, tanto per cominciare (vedi la documentazione relativa).

    In secondo luogo, dovrai essere tu a verificare e decidere quali sono i punti che, man mano che vengono gradualmente completati, costituiscono un avanzamento nel progresso di elaborazione. Ad esempio, metti che la maggior parte del tempo è richiesta per fare un ciclo di scrittura di N-mila righe nel file, questo può essere sicuramente un parametro valido per misurare in quale punto (all'incirca) ci si trova nel processo complessivo di generazione del file.

    Prova ad andare in debug e a verificare quali sono i “colli di bottiglia” maggiori da questo punto di vista.

    Ciao! :)

Devi accedere o registrarti per scrivere nel forum
1 risposte