.NET: se il mio .NET automatizza Office, il cliente deve avere Office installato?
Domanda
Se creo un programma, che in una piccola area fuori mano, usa l'automazione di Excel:
l'applicazione fallirà quando è necessario Excel
o l'applicazione non si avvia?
Aggiornamento
Consentitemi di porre la stessa domanda, ma in modo più elaborato:
L'applicazione sarà utilizzabile da
-
99,9% degli utenti che non usano mai la funzionalità che richiede Excel
- 0% degli utenti, poiché Excel non è installato.
Fammi fare la stessa domanda in un altro modo:
Un'applicazione non riuscirà a inizializzare facendo riferimento alle DLL di interoperabilità COM?
Fammi fare la stessa domanda in un altro modo:
Impossibile avviare un'applicazione che non utilizza Excel, ma che fa riferimento alla DLL di interoperabilità COM?
Fammi fare la stessa domanda in un altro modo:
Un'applicazione che non utilizza Excel sarà utilizzabile se Excel non è installato, se quell'applicazione ha una dipendenza dalle dll di Interoperabilità primaria di Office?
Fammi fare la stessa domanda in un altro modo:
Se la mia applicazione non utilizza Excel, l'utente deve avere Excel installato?
Soluzione
Il codice verrà eseguito correttamente fino a quando non tenta di effettuare una chiamata alle librerie di automazione, in quel momento genererà un'eccezione.
Altri suggerimenti
Ho un'app che utilizza l'automazione di Excel e posso affermare definitivamente che fallirà in fase di esecuzione, non al momento del caricamento. Infatti controlliamo se è installato e mostriamo solo " Mostra i dati in Excel " se lo troviamo (ma i PIA sono distribuiti su tutte le installazioni).
Se automatizzi Office ... devi avere Office!
Detto questo, la risposta cambia se si trasforma la domanda in: Posso creare un foglio di calcolo Excel senza avere Excel sul client?
Esistono molti controlli di terze parti per farlo; puoi scrivere direttamente alle specifiche XML di MS SpreadML ( http: //msdn.microsoft.com/en-us/library/aa140066(office.10).aspx ; oppure utilizzare librerie di terze parti che lo fanno (come http://www.carlosag.net/Tools/ExcelXmlWriter/ ).
Penso che fallirà in fase di esecuzione, perché gli assembly di interoperabilità dovrebbero essere in grado di caricare senza i componenti COM disponibili sul sistema client.
AGGIORNAMENTO: Runtime dovrebbe significare quando ne hai bisogno!
Utilizzando COM in Win32, fallirà quando necessario.