none
[VB2010] E' possibile creare un file excel?

    Question

  • Salve a tutti ,

    mi servirebbe sapere se è possibile creare file excel mediante il codice di VB. Se è possibile che codice devo inserire nella mia applicazione?

    Ho provato con una cosa del genere:

    Imports

     

    System

    Imports

     

    System.IO

    Imports

     

    System.Text

    Module

     

    Module1

     

    Sub

    Main()

     

    Dim path As String =

    "C:\Users\UTENTE\Desktop\abc.xls"

     

    ' Create or overwrite the file.

     

    Dim fs As FileStream = File

    .Create(path)

     

    End

    Sub

     

    End

     

    Module

     

    ma quando apro il file excel creato mi viene segnalato un errore.

    Grazie in anticipo per ogni risposta

    Tuesday, January 17, 2012 9:22 AM

Answers

  • Ciao!

    Per creare file Excel dal tuo programma, devi utilizzare una libreria di terze parti che ti permetta di scrivere file nel formato atteso. Ci sono soluzioni sia free sia a pagamento per ottenere questo risultato.

    Innanzi tutto, se sulla macchina è installato Excel, puoi usare direttamente l'oggetto COM esposto da quest'ultimo per la creazione di file. Qui: http://www.codeproject.com/KB/cs/Excel_and_C_.aspx trovi un esempio del suo utilizzo. E' scritto in C#, ma dovresti riuscire a comprenderlo con facilità, eventualmente ricorrendo ad un convertitore di codice come questo: http://www.developerfusion.com/tools/convert/csharp-to-vb/.

    A me personalmente piace poco utilizzare direttamente Excel per la scrittura dei file, anche perché non voglio mettere dipendenze con oggetti COM nelle mie applicazioni, che vanno aggiornate quando cambiano i componenti, potrebbero non essere installate, ecc.

    Di solito, quindi, mi oriento verso soluzioni free di terze parti. Io uso la libreria CarlosAg Excel Xml Writer, che puoi trovare qui: http://www.carlosag.net/tools/excelxmlwriter/. Essa produce file Excel utilizzando il formato XML. E' molto semplice da usare ed estramamente veloce, come vuoi vedere da alcuni semplici esempi qui: http://www.carlosag.net/tools/excelxmlwriter/sample.

    In alternativa, puoi dare uno sguardo alla libreria excellibrary, http://code.google.com/p/excellibrary/, che ti permette di salvare file nel formato nativo di Excel (XLS).

    Né CarlosAg Excel Xml Writer  excellibrary utilizzano l'oggetto COM di Excel.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    Tuesday, January 17, 2012 9:43 AM

All replies

  • Ciao!

    Per creare file Excel dal tuo programma, devi utilizzare una libreria di terze parti che ti permetta di scrivere file nel formato atteso. Ci sono soluzioni sia free sia a pagamento per ottenere questo risultato.

    Innanzi tutto, se sulla macchina è installato Excel, puoi usare direttamente l'oggetto COM esposto da quest'ultimo per la creazione di file. Qui: http://www.codeproject.com/KB/cs/Excel_and_C_.aspx trovi un esempio del suo utilizzo. E' scritto in C#, ma dovresti riuscire a comprenderlo con facilità, eventualmente ricorrendo ad un convertitore di codice come questo: http://www.developerfusion.com/tools/convert/csharp-to-vb/.

    A me personalmente piace poco utilizzare direttamente Excel per la scrittura dei file, anche perché non voglio mettere dipendenze con oggetti COM nelle mie applicazioni, che vanno aggiornate quando cambiano i componenti, potrebbero non essere installate, ecc.

    Di solito, quindi, mi oriento verso soluzioni free di terze parti. Io uso la libreria CarlosAg Excel Xml Writer, che puoi trovare qui: http://www.carlosag.net/tools/excelxmlwriter/. Essa produce file Excel utilizzando il formato XML. E' molto semplice da usare ed estramamente veloce, come vuoi vedere da alcuni semplici esempi qui: http://www.carlosag.net/tools/excelxmlwriter/sample.

    In alternativa, puoi dare uno sguardo alla libreria excellibrary, http://code.google.com/p/excellibrary/, che ti permette di salvare file nel formato nativo di Excel (XLS).

    Né CarlosAg Excel Xml Writer  excellibrary utilizzano l'oggetto COM di Excel.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva

    Tuesday, January 17, 2012 9:43 AM
  • Ho provato con questo codice:

    Imports CarlosAg.ExcelXmlWriter
    
    Class TestApp
    	Private Shared Sub Main(args As String())
    		Dim book As New Workbook()
    		Dim sheet As Worksheet = book.Worksheets.Add("Sample")
    		Dim row As WorksheetRow = sheet.Table.Rows.Add()
    		row.Cells.Add("Hello World")
    		book.Save("c:\test.xls")
    	End Sub
    End Class

    ma mi da una serie di erorri nel compilatore. Dove sbaglio?

    Tuesday, January 17, 2012 10:04 AM
  • Difficile dirlo così... Quali sono questi errori?


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 10:06 AM
  • Scusa l'ignoranza ma devo scaricare la libreria presente in http://www.carlosag.net/tools/excelxmlwriter/ il problema potrebbe essere questo dato che non miriconosce

    CarlosAg.ExcelXmlWriter

    nel caso una volta scaicata dove va inserita?

    Mi scuso ancora ma non sono un esperto in queste cose.

    

    Tuesday, January 17, 2012 10:10 AM
  • Certo, devi scaricare la libreria utilizzando questo link: http://www.carlosag.net/downloads.aspx?file=CarlosAg.ExcelXmlWriter.zip. Dopodiché, copia il file DLL nella cartella del tuo progetto, magari crea un'apposita cartella Libraries. Poi, fai clic destro sul progetto nel Solution Explorer di Visual Studio, quindi seleziona Add Reference e, nella finestra di dialogo che si aprirà, vai nel tab Browse. Quindi devi selezionare la DLL che hai precedentemente salvato e confermare con un click su OK.

    Così facendo tutto dovrebbe funzionare come desiderato.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 10:18 AM
  • Inserita la libreria, il codice funziona anche se quando apro il file mi dice che il formato del file che si sta aprendo è diverso dal formato specificato dall'estensione del file. Come mai?

    Tuesday, January 17, 2012 10:55 AM
  • Perché, come detto, questa libreria crea file Excel in formato XML, quindi il file deve avere questa estensione: Excel, infatti, verifica che il contenuto del file sia coerente con la sua estensione.

    Questo non è comunque un problema, perché anche se il file ha estensione XML, Windows riconosce che contiene dati di Excel, quindi lo apre con il programma corretto.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 11:00 AM
  • Giusto, hai ragione.

    Ho risolto ancora una volta il mio problema.

    Grazie mille!!!

    Tuesday, January 17, 2012 11:07 AM
  • Di niente, è stato un piacere darti una mano.

    P.S.: Ricordati di segnare la risposta :-)


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 11:11 AM
  • Scusami ancora sono nuovo nel forum, cosa intendi con per "segnare la risposta"?

    Tuesday, January 17, 2012 11:17 AM
  • Tranquillo, nessun problema :-)

    Sotto ai vari post che ho scritto, dovresti trovare la scritta Segna come Risposta. Usando questi link puoi marcare come risposta il post o i post che secondo te ti hanno aiutato a trovare una soluzione al tuo problema.


    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 11:26 AM
  • Ciao Rugg88,

    You wrote on 17/01/2012 :

    mi servirebbe sapere se è possibile creare file excel mediante il codice di VB. Se è possibile che codice devo inserire nella mia applicazione?

    questo è una figata pazzesca: http://closedxml.codeplex.com/

    .m


    --
    blog @ //milestone.topics.it
    Tuesday, January 17, 2012 1:10 PM
  • Fantastico, non lo conoscevo. Grazie mille per la segnalazione, sembra davvero interessante!
    Marco Minerva [MCPD]
    Blog: http://blogs.ugidotnet.org/marcom
    Twitter: @marcominerva
    Tuesday, January 17, 2012 1:46 PM
  • Ciao Mauro,

    questo è una figata pazzesca: http://closedxml.codeplex.com/

    grazie ,  davvero fantastica :).

    Ciao.

     


    Tuesday, January 17, 2012 7:06 PM