Qual è il modo migliore e più veloce per scrivere su un file Excel con C#?

Sto cercando di scrivere su un file excel tramite OLEDB (senza automazione).
Ho circa 500 righe di dati che ricevo da un’altra applicazione e poi scrivere su un file Excel, uno per uno, utilizzando ‘INSERT INTO..’ Query.
Sono sicuro che non c’è alcun ritardo nella lettura di dati da un’altra applicazione. Ho controllato che.
Il tempo totale impiegato per scrivere in un file excel per 500 righe in circa 3 minuti.
Questo è troppo. Questo è sicuramente a causa dell’operazione di scrittura del file.

Quale sarebbe il modo migliore per fare questo veloce?
Devo usare qualche altra tecnica per la scrittura?
Dovrei provare una tecnica di automazione?

http://support.microsoft.com/kb/306023
Questo link mostra molte tecniche, ma non è sicuro di quale utilizzare.

InformationsquelleAutor | 2009-05-15

 

12 Replies
  1. 7

    Se si può COM in excel, è possibile eseguire una query direttamente da excel tramite COM, o creare un array di dati e cadere direttamente in un intervallo pari alla dimensione dell’array. Anche se excel non è grande per il piccolo COM chiamate, funziona piuttosto bene, con pochi grandi COM chiamate 🙂

    DataSet ds = new DataSet();
              da.Fill(ds);
              int width = ds.Tables[0].Columns.Count;
              int height = ds.Tables[0].Rows.Count;
              object[,] retList = new object[height, width];
              for (int i = 0; i < height; i++)
              {
                DataRow r = ds.Tables[0].Rows[i];
                for (int j = 0; j < width; j++)
                  retList[i, j] = r.ItemArray[j];
              }
              Excel.Range range = mWs.get_Range(destination, mWs.Cells[destination.Row + height - 1, destination.Column + width - 1]);
              range.set_Value(Missing.Value, retList);
              System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
              range = null;

    Questo è un esempio di recupero di dati e inserimento di un array in un file excel in una chiamata COM

  2. 3

    Excel già fornito con tutto il necessario per leggere/scrivere dati in XML.

    Ho usato il SpreadsheetML formato occasione e ha funzionato bene per me. Con esso, si scrive un documento in formato xml e il nome con il .l’estensione xls. Mostof la funzionalità di excel è disponibile. Microsoft documentazione di riferimento è qui. Google per le esercitazioni in varie lingue, come Guide, PHP. Il libro Excel Hack parla come bene.

  3. 2

    Se è solo dati, un file CSV è possibile importare. Creare il file in codice e utilizzare l’automazione per rendere Excel importare il file.

    AGGIORNAMENTO: Dopo aver scritto questo mi piace @MicTech suggerimento che non conoscevo.

    • Ho una .file xls con molti fogli di calcolo. Devo scrivere in uno dei fogli. Mi potete dire come utilizzare l’automazione per importare il file csv e quindi copiare i dati nel foglio di calcolo?
    • Ci sono esempi di codeproject.com e in altri luoghi. E questo dovrebbe aiutare: msdn.microsoft.com/en-us/library/wss56bz7(VS.80).aspx
    • Questo è veloce, a volte è meglio usare l’Importazione di Testo in excel per aprire il csv tuttavia, come excel in formato testo come elemento scientifico numeri per dare solo un esempio di auto excel comportamento che si ha un controllo limitato su.
  4. 1

    Stai cercando un dump di Excel o di rimanere connessi e inviare dei dati in Excel più di una volta?

    Se il vostro cercando di inserire i dati di Excel più di una volta si dovrebbe indagare fare un server RTD, li ho usati molte volte e funzionano Server RTD

    Se la vostra ricerca per una volta di spingere per Excel è necessario utilizzare COM. L’utilizzo di COM e C#

    Versione C# 4 ha alcuni interessanti miglioramenti gestiti COM e non vi sarà più bisogno di assembly di interoperabilità primari quando si lavora con Excel. C# 4 non è in produzione, ma è possibile scaricare una versione beta, se funziona per voi.

  5. 0

    Un altro modo di “scrivere” di Excel, è possibile creare i vostri dati in una pagina HTML e caricare. Excel è in grado di leggere il codice html. Un punto di bonus per farlo attraverso html è che è possibile formattare i dati un po ‘ meglio di te con il CSV.

    Ma che ha detto, se si sono solo l’esportazione di dati semplici (piccoli campi di testo e numeri), vai con il CSV.

  6. 0

    Bene, la maggior parte di base (ma anche il più complicato) il modo di scrivere di Excel è la creazione di un file binario seguenti BIFF formato. Con BIFF formato, è necessario delineare come il file di Excel è strutturato. E ‘ molto complesso, ma si ha il controllo, in base al cell, su cosa scrivere.

    Ci sono altri esempi su CodeProject esportazione di un set di dati in un file Excel. L’uno nella mente crea un file XML che segue Excel in formato XML. Scrive anche in base al cell. Guardate:

    http://www.codeproject.com/KB/office/ExportDataSetToExcel.aspx

  7. 0

    In modo rapido e grossolano è quello di creare una tabella HTML che contiene i tuoi dati tabulari e quindi salvare con un .l’estensione xls. Funziona e viene aperto in Excel bene.

Lascia un commento