Esportare un file di Excel 2010 in PDF tramite VB.Net 2010 e C# 4

Articolo che illustra come esportare un file Excel in PDF.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

Introduzione

In questo articolo, vedremo come da una windows application, possiamo convertire un file Excel 2010 in formato PDF, tramite il componente aggiuntivo scaricabile gratuitamente dal seguente sito http://www.microsoft.com/downloads/details.aspx?familyid=4D951911-3E7E-4AE6-B059-A2E79ED87041&displaylang=en .
Si crea un nuovo progetto di tipo Windows Application, nella form, aggiungiamo un controllo di tipo button, che avrà il nome di BtnEsporta e la proprietà text impostata con il valore “Converti”.
Facciamo doppio click sul pulsante, in questo modo si passa in visualizzazione codice, nell’evento click del pulsante.
Tramite il menu “Progetto”, selezioniamo la voce “Aggiungi riferimento…” nella finestra che viene aperta (figura 1) selezioniamo la pagina “Com” e dalle voci che ci vengono riportate selezioniamo quella relativa a Microsoft Excel 14, come riportato in figura 1.




Figura 1

In questo modo abbiamo aggiunto un riferimento alla libreria di Excel 2010.

Stesura di codice

Terminata la parte d’impostazione del progetto, scriviamo il codice per convertire il file excel in Pdf. Si ricorda che si deve aver già creato un file Excel 2010.
Si inseriscono gli spazi di nomi per la gestione dei file Excel, qui di seguito si riporta un esempio di codice, ricordiamo che si fa uso dell’alias, in modo che Application non va in conflitto con la classe Application di form.

VB.Net
Imports Microsoft.Office.Interop.Excel
Imports ExcelAPP = Microsoft.Office.Interop.Excel
C#
using Microsoft.Office.Interop.Excel;
using ExcelAPP = Microsoft.Office.Interop.Excel;


Utilizzeremo un oggetto di tipo application di Excel, di questo oggetto, tramite il metodo open si aprirà il documento creato, e tramite il metodo “ExportAsFixedFormat” effettueremo la conversione in PDF.
Qui di seguito si riporta il codice completo di tali operazioni.

VB.Net
Dim AppExcel As New ExcelAPP.Application()
 
        'Creo i percorsi e nomi dei file Excel e pdf
        Dim NomeFileExcel As String = "C:\FileExcel.xlsx"
        Dim NomeFilePDF As String = "C:\varie\FilePDF.pdf"
  
        Try
            'apro il file excel, in modo che poi lo posso convertire
            AppExcel.Workbooks.Open(NomeFileExcel) 
            'se non è null e quindi un oggetto valorizzato, effetto l'esportazione in formato PDF
            If Not AppExcel Is Nothing Then
                'parametri, formato e nome del file
                AppExcel.Workbooks(1).ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, NomeFilePDF)           
    End If       
 Catch ex As Exception
            'errore nella fase di esportazione
            MessageBox.Show("Si è verificato un errore: " + ex.Message)
        Finally           
    'chiudo l'applicazione Excel e rilascio le risorse
            If Not AppExcel Is Nothing Then               
  AppExcel.Quit()
                AppExcel = Nothing
            End If
            'libero la memoria
            GC.Collect()
            GC.WaitForPendingFinalizers()           
     GC.Collect()           
     GC.WaitForPendingFinalizers()       
 End Try
C#
 ExcelAPP.Application AppExcel = new ExcelAPP.Application();
        //Creo i percorsi e nomi dei file Excel e pdf
        string NomeFileExcel = @"C:\FileExcel.xlsx";           
 string NomeFilePDF = @"C:\varie\FilePDF.pdf";
            try
            {
                //apro il file excel, in modo che poi lo posso convertire               
  AppExcel.Workbooks.Open(NomeFileExcel);               
  //se non è null e quindi un oggetto valorizzato, effetto l'esportazione in formato PDF
                if (AppExcel != null)
                {
                    //parametri, formato e nome del file
                    AppExcel.Workbooks[1].ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, NomeFilePDF);
                }
            }
            catch (Exception ex)
            {                //errore nella fase di esportazione
                MessageBox.Show("Si è verificato un errore: " + ex.Message);
            }
            finally
            {
                //chiudo l'applicazione Excel e rilascio le risorse
                if (AppExcel != null)
                {                   
    AppExcel.Quit();
                  AppExcel = null; 
}
                //libero la memoria
                GC.Collect();
                GC.WaitForPendingFinalizers();               
  GC.Collect();               
  GC.WaitForPendingFinalizers();}


Analizzando in dettaglio il codice appena visto,  si è creato un oggetto di tipo Application di Excel, due variabili che contengono il percorso e nome del file excel da convertire e quello pdf (che non deve esistere)  tramite il metodo open, si apre il file excel e tramite il metdo ExportAsFiexFormat di Workbooks si effettua la stampa.
Nella parte finally,  verifichiamo che l’oggetto è in stanziato e poi si procede alla sua chiusura e si libera la memoria.

Conclusioni

L’articolo ha voluto fornire una tecnica di come convertire un file Excel in PDF, il tutto tramite la tecnologia .Net 4 ed il nuovo pacchetto Microsoft Office 2010, le potenzialità offerte dalla nuova tecnologia e dal nuovo Office offrono interessanti spunti per creare applicazioni più complessi e più professionali con una facilità di codice.
In questo caso, abbiamo utilizzato gli oggetti messi a disposizione dalla libreria di Excel.