2010-08-31 19 views
9

Ho bisogno di lavorare con Excel 2007 File per leggere i dati. per ciò che è il modo migliore per farlo:Quale è il migliore oggetto o database OLEDB o Excel

  1. Utilizzando OLE DB Provider
  2. Excel Interop oggetto
  3. scaricare i dati di Excel a database e utilizzo Procedura

gentilmente mi guida per scegliere .

+1

La tua domanda non è chiara. Leggi di porre domande SO qui: http://tinyurl.com/so-hints – Oded

risposta

17

Qui sono le mie opinioni:

1. Utilizzando il provider OLEDB

soddisferà le tue esigenze solo se disponi di tabelle strutturate semplici e uniformi. Ad esempio, non ti sarà di grande aiuto se devi estrarre qualsiasi informazione di formattazione della cella. L'algoritmo "guirata del tipo di riga" del motore Jet può rendere questo approccio quasi inutilizzabile. Ma se il tipo di dati può essere identificato in modo univoco dalle prime righe di ogni tabella, questo approccio potrebbe essere sufficiente. Pro: è veloce e funziona anche su macchine in cui MS Excel non è installato.

2. Excel Interop Object

può essere molto lento, soprattutto rispetto all'opzione 1, ed è necessario installare MS Excel. Ma hai accesso completo al modello a oggetti di Excel, puoi estrarre quasi tutte le informazioni (ad esempio: informazioni di formattazione, colori, cornici, ecc.) Che sono memorizzate nel tuo file Excel e che i tuoi fogli possono essere strutturati con la complessità che desideri.

3. Scaricare i dati di Excel nel database e utilizzare la procedura

dipende dal tipo di dump del database che si ha in mente e se si dispone di un sistema di database a portata di mano. Se stai pensando all'accesso MS, questo utilizzerà di nuovo il motore Jet internamente, con gli stessi pro e contro dell'approccio 1 sopra.

Altre opzioni:

4. scrivere una macro VBA di Excel per leggere i dati necessari e scriverli in un file di testo. Leggi il file di testo da un programma C#. Pro: molto più veloce dell'approccio 2, con la stessa flessibilità nell'accesso alle meta informazioni. Con: devi dividere il tuo programma in una parte VBA e una parte C#. E hai bisogno di MS Excel sulla tua macchina.

5. Utilizzare una libreria/componente di terze parti per questa attività. Ci sono un sacco di librerie per il lavoro, gratuite e commerciali. Basta chiedere a Google o cercare qui su SO.Molte di queste librerie non richiedono MS Excel sulla macchina e in genere rappresentano l'opzione migliore se si desidera estrarre i dati come parte di un processo del server.

+0

Inoltre non puoi usare Excel Interop Object su una macchina senza Office installato – BornToCode

+0

@BornToCode: grazie per l'osservazione, ho modificato la mia risposta di conseguenza. –

2

Le opzioni 1 e 2 sono quasi sempre un esercizio di dolore, indipendentemente da come si pone la domanda.

Se è possibile utilizzare SSIS per spostare i dati in un database e se ciò soddisfa le proprie esigenze a causa di altri requisiti, è anche una buona opzione.

Tuttavia, l'opzione preferita è solitamente utilizzare Office Open XML per Excel 2007 e versioni successive. Questo non ha nessuno dei problemi di COM che si ottengono con l'Opzione 2, e nessuno dei problemi che hai con indovinare i tipi di riga che hai con l'Opzione 1.

Con una domanda più elaborata, puoi ottenere una risposta molto migliore, anche se.

Problemi correlati