2009-04-16 3 views
5

Ho bisogno di incorporare una porzione di foglio Excel (non l'intero foglio) in un controllo utente in linguaggio C#. E voglio manipolare i dati su di esso e salvarlo in una raccolta.Incorpora foglio Excel in controllo utente C#

Qual è il modo migliore per farlo?

+0

Hai solo bisogno di visualizzare i dati in formato tabellare o hai effettivamente bisogno del motore di rendering Excel? Si può semplicemente leggere il file excel e visualizzarlo in un DataGridView. In caso contrario, sarà necessario eseguire alcune operazioni OLE/COM (suppongo) –

+0

Se è necessario il foglio Excel, è possibile inserire un controllo WebBrowser nel winform e caricare il tipo di contenuto come documento Excel. – jgallant

+0

Qualche nuova opzione che è aumentata dal 2009? – PPC

risposta

6

Vorrei aprire il foglio di calcolo con la libreria di Excel COM. Se si aggiunge un riferimento alla libreria oggetta di Microsoft Excel, è possibile accedere all'interfaccia Com.

Aggiungi queste affermazioni utilizzando:

using Microsoft.Office.Interop; 
using Microsoft.Office.Interop.Excel; 

Poi si può leggere dal foglio di calcolo facendo qualcosa di simile:

private void GetData(string fileName, string tabName) 
    { 
     Workbook theWorkbook; 

     Application ExcelObj = null; 
     ExcelObj = new Application(); 

     theWorkbook = ExcelObj.Workbooks.Open(fileName, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
      Type.Missing, Type.Missing); 


     Sheets sheets = theWorkbook.Worksheets; 
     Worksheet worksheet = (Worksheet)sheets[tabName]; 

     Range range = worksheet.get_Range("A1:A1", Type.Missing); 

     string data = range.Text as string; 

     // 
     // TODO : store the data 
     // 

     theWorkbook.Close(false, fileName, null); 
    } 

Questo codice avrebbe letto il contenuto della cella A1 in una stringa.

Uno dei motivi per cui si lavora con l'interfaccia COM di Excel è che è necessario accedere ai dati in un intervallo, anche se si desidera solo una cella. È possibile impostare l'intervallo in modo che sia un gruppo di celle, quindi è possibile scorrere la raccolta che restituisce per ottenere il contenuto di ogni cella.

Si consiglia inoltre di aggiungere un controllo/gestione degli errori sul nome del file e il nome della scheda.

C'è anche un modo per usare ODBC per leggere da Excel, ma il foglio di calcolo deve essere formattato in un certo modo. Devono esserci dati di intestazione nella riga 1. Ho trovato più facile usare l'interfaccia COM.

Una volta acquisiti i dati necessari, è possibile inserirli in un DataSet tipizzato. Quindi è possibile associare il set di dati a un DataGridView se si utilizza WinForms o un ListBox in WPF. Se si desidera salvare i dati in un formato XML, è possibile utilizzare la funzione WriteXml di DataSet per archiviare i dati in un file.

+0

Se non hai votato, rispondi perché, per favore. – epotter

5

Perché non utilizzare uno DataGridView popolato con i dati che si desidera modificare?

Una volta completate le modifiche, salvare i dati da DataGridView sulla parte del file Excel da cui è stato avviato per iniziare.

Potresti anche trovare theselinksuseful!

0

Cerca nella libreria Microsoft.Office.Interop.Excel. Esistono molti controlli excel per lavorare con file e operazioni Excel.