none
Interoperabilità con Excel 2010

    Question

  • Ciao a tutti
    Ho un problema di questo tipo. Devo accedere ad un foglio di Excel 2010 da un programma in C# con Framework 3.5 scritto con VS2008.
    Nell'applicazione faccio riferimento alla dll Microsoft.Office.Interop.Excel.dll versione 14.0 installata dalla Pia2010
    Office 2010 è intallato.

    Da codice creo un oggetto Excel cosi:

    Microsoft.Office.Interop.Excel.Application sXL ;
    sXL = new Microsoft.Office.Interop.Excel.Application();

    L'esecuzione del programma genera un errore di run time alla seconda istruzione che restituisce tale descrizione:

    Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Interfaccia non registrata. (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    Non so come risolverlo ... avete qualche idea?

    Grazie anticipatamente


    Cereti Gabriele www.bilo4.it
    Thursday, January 27, 2011 1:38 PM

Answers

  • sgabrizzo wrote:

    Ciao a tutti
    Ho un problema di questo tipo. Devo accedere ad un foglio di Excel 2010 da un programma in C# con Framework 3.5 scritto con VS2008. Nell'applicazione faccio riferimento alla dll Microsoft.Office.Interop.Excel.dll versione 14.0 installata dalla Pia2010 Office 2010 è intallato. Da codice creo un oggetto Excel cosi:

    Microsoft.Office.Interop.Excel.Application sXL ;
    sXL = new Microsoft.Office.Interop.Excel.Application();

    L'esecuzione del programma genera un errore di run time alla seconda istruzione che restituisce tale descrizione:

    Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Interfaccia non registrata. (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    Non so come risolverlo ... avete qualche idea?

    Grazie anticipatamente

    Mi sembra un problema di versioning tra PIA ed Excel.

    Se passi al Framework 4.0 hai enormi vantaggi per l'interoperabilità.
    Esiste infatti il type embedding che ti permette di "copiare" le sole funzioni che usi delle PIA evitando così di doverle redistribuire sui PC ed evitando gran parte dei problemi di versioning.

    Altre info sul mio webcast:
    http://www.microsoft.com/italy/beit/Generic.aspx?video=fbecc2e2-bcbf-4e60-a305-9e183113ac19

    e naturalmente su Channel9:
    http://channel9.msdn.com/shows/10-4/10-4-Episode-25-Fixing-PIA-Pains-with-Type-Equivalence


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Thursday, January 27, 2011 2:44 PM

All replies

  • Ciao sgabrizzo,

    scusa ma sono da mobile ... prova a vedere questo link se può tornarti utile :

    How to automate Microsoft Excel from Microsoft Visual C#.NET

     

    Ciao


    Renato Marzaro  MVP Visual Basic

    http://community.visual-basic.it/renato

    Thursday, January 27, 2011 2:01 PM
  • sgabrizzo wrote:

    Ciao a tutti
    Ho un problema di questo tipo. Devo accedere ad un foglio di Excel 2010 da un programma in C# con Framework 3.5 scritto con VS2008. Nell'applicazione faccio riferimento alla dll Microsoft.Office.Interop.Excel.dll versione 14.0 installata dalla Pia2010 Office 2010 è intallato. Da codice creo un oggetto Excel cosi:

    Microsoft.Office.Interop.Excel.Application sXL ;
    sXL = new Microsoft.Office.Interop.Excel.Application();

    L'esecuzione del programma genera un errore di run time alla seconda istruzione che restituisce tale descrizione:

    Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Interfaccia non registrata. (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    Non so come risolverlo ... avete qualche idea?

    Grazie anticipatamente

    Mi sembra un problema di versioning tra PIA ed Excel.

    Se passi al Framework 4.0 hai enormi vantaggi per l'interoperabilità.
    Esiste infatti il type embedding che ti permette di "copiare" le sole funzioni che usi delle PIA evitando così di doverle redistribuire sui PC ed evitando gran parte dei problemi di versioning.

    Altre info sul mio webcast:
    http://www.microsoft.com/italy/beit/Generic.aspx?video=fbecc2e2-bcbf-4e60-a305-9e183113ac19

    e naturalmente su Channel9:
    http://channel9.msdn.com/shows/10-4/10-4-Episode-25-Fixing-PIA-Pains-with-Type-Equivalence


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Thursday, January 27, 2011 2:44 PM
  • Grazie ad entrambi per le risposte

    Comunque ho anche provato a fassare al Framework 4.0 ma non ho ottenuto soluzione.

    Purtroppo il problema sorge solo se c'è installato Office 2010 .... boh

     


    Cereti Gabriele www.bilo4.it
    Thursday, January 27, 2011 5:16 PM
  • sgabrizzo wrote:

    Grazie ad entrambi per le risposte

    Comunque ho anche provato a fassare al Framework 4.0 ma non ho ottenuto soluzione.

    Purtroppo il problema sorge solo se c'è installato Office 2010 .... boh

     

    Ma hai segnato le pia per l'embedding?
    L'embedding viene messo solo se crei un progetto nuovo, altrimenti devi farlo in manuale.
    Segui i video ...


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Thursday, January 27, 2011 6:26 PM
  • ho visto il video ... e funziona con vs2010 e office 2010.

    ma vallo a spiegare al mio cliente .... :-D

    se rinasco faccio il gelataio  ;-)

    Thanks

     


    Cereti Gabriele www.bilo4.it
    Thursday, January 27, 2011 8:14 PM
  • sgabrizzo wrote:

    ho visto il video ... e funziona con vs2010 e office 2010.

    ma vallo a spiegare al mio cliente .... :-D

    Funziona con il framework 4 ... se credi con vs2010 express.
    L'embedding funziona con qualsiasi PIA, anche fatta da te, quindi Office 2010 NON è necessario.

    Forse non hai colto alcuni punti salienti:
    - l'embedding copia le funzioni che usi all'interno del tuo assembly e le "mappa" su quelle che troverà sulla macchina di destinazione.

    - Visto che si tratta di interop COM, il mapping è fatto via interfacce e quindi se usi funzionalità che esistono in Office 2003 (tanto per fare un esempio), il tuo applicativo funzionerà con 2003, 2007 e 2010.

    Poi se uno vuole fare il malizioso a tutti i costi ... ;-)

    se rinasco faccio il gelataio  ;-)

    Se non ci metti oli vegetali nè idrogenati, sarò tuo cliente fisso ;)


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Thursday, January 27, 2011 8:21 PM
  • perdonami ma ho risposto frettolosamente  ...

    ho sempre il problema dell'interfaccia non registrata .....

    per farla breve sulla macchina di sviluppo ho installato VS2010 ENG le PIA office 2010, i tools Office per VS2010.

    Ho creato un progetto nuovo e referenziato Microsoft.Office.Interop.Excel.dll versione 14.0 che come indicato nel tuo video per dafault viene fatto l'embedding .

    Tutto viene compilato correttamente ma appena istanzio  l'oggetto Excel.Application ho l'errore :

    Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Interfaccia non registrata. (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    Non capisco dove sbaglio .....


    Cereti Gabriele www.bilo4.it
    Friday, January 28, 2011 12:44 PM
  • sgabrizzo wrote:

    perdonami ma ho risposto frettolosamente  ...

    ho sempre il problema dell'interfaccia non registrata .....

    per farla breve sulla macchina di sviluppo ho installato VS2010 ENG le PIA office 2010, i tools Office per VS2010.

    Ho creato un progetto nuovo e referenziato Microsoft.Office.Interop.Excel.dll versione 14.0 che come indicato nel tuo video per dafault viene fatto l'embedding .

    Tutto viene compilato correttamente ma appena istanzio  l'oggetto Excel.Application ho l'errore :

    Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Interfaccia non registrata. (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    Non capisco dove sbaglio .....

    Giusto per capirci sul PC deve esserci in ogni caso Office, ok? Le PIA sono solo dei wrapper

    L'errore ce l'hai sulla macchina di sviluppo o su un'altra?
    Se il problema è su una macchina differente, che versioni di office hai?


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Friday, January 28, 2011 12:56 PM
  • Sto lavorando sulla macchina di sviluppo in cui ho installato Office 2010 Pro in Italiano e VS 2010 Express ENG.

    grazie ....

     


    Cereti Gabriele www.bilo4.it
    Friday, January 28, 2011 1:53 PM
  • sgabrizzo wrote:

    Sto lavorando sulla macchina di sviluppo in cui ho installato Office 2010 Pro in Italiano e VS 2010 Express ENG.

    comunque grazie ....

     

    ok, bene. La lingua di vs.net non influisce. Ho il sospetto che l'installazione di Office abbia qualcosa che non va. Hai mica più versioni di Office installate?


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Friday, January 28, 2011 2:44 PM
  • ok ci sono riuscito ...... miracolo

    per prova ho installato la versione di valutazione completa di Office 2010.

    in un primo momento l'app mi dava un errore sulle autorizzazioni a referenziare una applicazione Excel

    poi in Excel ho limitato al minimo la sua protezione e l'app è andata senza errori....

    Prima avevo provato la versione home and businnes ma non andava proprio......

    Devo dire che il concetto dei rif embedding è molto utile..... chissà se funzionana anche con i moduli di Crystal Report

    thanks a lot


    Cereti Gabriele www.bilo4.it www.websilver.it
    Friday, January 28, 2011 3:19 PM
  • sgabrizzo wrote:

    ok ci sono riuscito ...... miracolo

    per prova ho installato la versione di valutazione completa di Office 2010. aperto Excel e limitato la sua protezione al minino.

    Prima avevo provato la versione home and businnes ma non andava proprio......

     

    Non so dirti se è una limitazione di quelle versioni. Puoi provare a chiedere sui forum di office quali sia la versione minima.

    Ad ogni modo adesso che hai qualcosa di funzionante, la tua applicazione potrà funzionare anche su un altro PC senza dover installare le PIA come era necessario fino al framework 3.5 compreso.

    Inoltre se non usi funzionalità specifiche di Office 2010, la tua applicazione funzionerà anche con Office più vecchi.

    Buon lavoro


    Raffaele Rialdi  http://www.iamraf.net
    Weblog: http://blogs.ugidotnet.org/raffaele
    Microsoft MVP profile https://mvp.support.microsoft.com/profile/raffaele
    UGIdotNET - http://www.ugidotnet.org/


    Raffaele Rialdi [MVP] My articles and videos: http://www.iamraf.net Italian blog: http://blogs.ugidotnet.org/raffaele
    Friday, January 28, 2011 4:38 PM