2012-02-07 18 views
5

Sto lavorando a un'applicazione in grado di importare dati da diversi formati diversi. Vorrei includere CSV e altri tipi di file flat (facile) nonché XLS e XLSX.
Sembra che la mia migliore opzione sia usare Interop.Excel che capisco è disponibile solo se Excel è installato.
C'è un modo per verificare se Interop.Excel è disponibile e indicare all'utente che Excel deve essere installato per importare da XLS/XLSX?Rileva disponibilità Microsoft.Office.Interop.Excel

risposta

7

Microsoft.Office.Interop.Excel è un Office Primary Interop Assembly che è possibile spedire con l'applicazione, indipendentemente dal fatto che il client abbia installato Office o meno. Non farà alcun danno finché non inizi ad usarlo. Quindi, prima di utilizzarlo, è possibile look at the registry per verificare se Office è installato.

+0

Controllare il registro mi sembra strano, ma se è il modo in cui viene solitamente fatto, suppongo che lo farò. – yakatz

+1

Come è questa la risposta? Il controllo dell'installazione di Office non significa necessariamente che i componenti di interoperabilità siano installati. La domanda è se gli assembly di interoperabilità possono essere rilevati e non come aggiungerli ai prereq di installazione. Gli assembly possono essere rilevati utilizzando la reflection. – Kris

1

Se si desidera supportare i file nativi di Microsoft Excel e non si vuole fare affidamento su Microsoft Excel, cercare in OpenXML. Funzionerà solo con i nuovi file Excel XML formattati. Se le tue esigenze sono semplici e hai solo bisogno di leggere i dati dal file Excel o CSV legacy creato puoi essere in grado di utilizzare il provider Ace e/oi provider OLE DB 4.0 di Microsoft Jet

OpenXML consente di leggere/scrivere in nuovi file Excel formattati XML. Ci sono diversi thread su StackOverflow con maggiori informazioni sull'uso di OpenXML che vale la pena di verificare.

+1

Questo non risolve la domanda originale. La tua proposta richiede una dipendenza esterna per cui alla fine avresti ancora bisogno di controllare ... – Kris

+0

Quale dipendenza esterna? Avrebbe bisogno di fare riferimento all'assembly Document.OpenXML dal suo progetto e potrebbe distribuirlo con la sua applicazione. L'utente finale non avrebbe bisogno di avere Excel installato. Allo stesso modo, il provider Microsoft Jet OLEDB 4.0 è presente con le versioni più recenti del sistema operativo Windows e potrebbe essere sfruttato dalla sua applicazione per leggere fogli di calcolo di vecchio formato non supportati dall'assembly OpenXML e dai file CSV, se necessario. – codechurn

+0

@ Art: la domanda riguardava il rilevamento di un assieme. Non si tratta di includerlo come prerequisito ... La tua soluzione è la stessa del suo problema iniziale. L'utente finale non avrebbe infatti bisogno di avere Excel installato, ma OpenOffice o qualcosa di diverso invece ... – Kris

Problemi correlati