Domanda

In una delle nostre applicazioni ASP.NET in C#, prendiamo una determinata raccolta di dati (raccolta SubSonic) e la esportiamo in Excel.Vogliamo anche importare file Excel in un formato specifico.Sto cercando una libreria che posso usare per questo scopo.

Requisiti:

  • File Excel 2007 (Excel 2003 supporta oltre 64.000 righe?Mi serve qualcosa di più.)
  • Non richiede Excel sul server
  • Prende una raccolta tipizzata e, se possibile, prova a inserire i campi numerici come numerici in Excel.
  • Funziona bene con file di grandi dimensioni (da 100k a 10M): abbastanza veloce.
  • Non si blocca durante l'esportazione dei GUID!
  • Non costa un sacco di soldi (nessuna libreria aziendale come Aspose).La versione gratuita è sempre fantastica, ma può essere una libreria commerciale.

Che libreria consigliate?L'hai usato per grandi quantità di dati?Ci sono altre soluzioni?

In questo momento sto utilizzando un semplice strumento che genera HTML che viene caricato da Excel in seguito, ma sto perdendo alcune funzionalità, inoltre Excel si lamenta quando lo carichiamo.Non ho bisogno di generare grafici o qualcosa del genere, basta esportare i dati grezzi.

Sto pensando a file CSV flat, ma Excel è un requisito del cliente.Posso lavorare direttamente con CSV, se avessi uno strumento per convertire da e verso Excel.Dato che Excel 2007 è un formato di file basato su XML (e compresso), immagino che questo tipo di libreria dovrebbe essere facile da trovare.Tuttavia, ciò che conta di più per me sono i vostri commenti e opinioni.


MODIFICARE:Ironicamente, secondo me e seguendo la risposta con il maggior numero di voti, la migliore libreria di importazione ed esportazione di Excel non è affatto esportabile.Questo non è il caso di tutti gli scenari, ma lo è per il mio.I file XLS supportano solo 64.000 righe.XLSX supporta fino a 1M.Le librerie gratuite che ho provato presentano prestazioni scadenti (un secondo per caricare una riga quando hai 200.000 righe).Non ho provato quelli a pagamento, poiché ritengo che siano troppo cari per il valore che offrono quando tutto ciò di cui hai bisogno è una routine di conversione XLSX<->CSV veloce.

È stato utile?

Soluzione

Darò la mia mano ai file CSV flat, se non altro perché hai il massimo controllo sul codice.Assicurati solo di leggere le righe e di elaborarle una alla volta (leggere il documento fino alla fine e dividerlo consumerà tutta la tua memoria, lo stesso con la scrittura, esegui lo streaming).

Sì, l'utente dovrà salvare come CSV in Excel prima di poterlo elaborare, ma forse questa limitazione può essere superata formandosi e fornendo istruzioni chiare nella pagina?

Infine, quando esporti al cliente, se imposti il ​​tipo MIME su text/csv, Excel viene solitamente mappato su quel tipo in modo che sembri all'utente come "un file Excel".

Altri suggerimenti

Ho scoperto Open XML SDK da la mia risposta originale. Fornisce classi fortemente tipizzate per gli oggetti di fogli di calcolo, tra le altre cose, e sembra essere abbastanza facile da lavorare. Lo userò per i rapporti in uno dei miei progetti. Purtroppo, la versione 2.0 non dovrebbe essere rilasciata fino alla fine del 2009 o del 2010.

la nuova versione di ExcelPackage è qui http://EPPlus.codeplex.com

Sto ancora combattendo con la funzione di esportazione in Excel poiché la mia applicazione dovrebbe esportare alcuni dati in Excel modello 2007

questo progetto mi sembra perfetto e lo sviluppatore è molto sensibile a bug e problemi.

Sto usando ClosedXML e funziona benissimo!

  

ClosedXML semplifica la creazione di Excel 2007/2010 per gli sviluppatori   File. Fornisce un modo orientato agli oggetti per manipolare i file   (simile a VBA) senza occuparsi delle seccature dei documenti XML. esso   può essere utilizzato da qualsiasi linguaggio .NET come C # e Visual Basic (VB).

SpreadsheetGear per .NET legge e scrive CSV / XLS / XLSX e fa di più.

Puoi vedere esempi ASP.NET live con codice sorgente C # e VB qui e scaricare una prova gratuita qui .

Ovviamente penso che SpreadsheetGear sia la migliore libreria per importare / esportare cartelle di lavoro Excel in ASP.NET, ma sono di parte. Puoi vedere cosa dicono alcuni dei nostri clienti sul lato destro di questa pagina .

Disclaimer: possiedo SpreadsheetGear LLC

Ho usato Flexcel in passato ed è stato fantastico. Ma questo era più per la creazione e l'aggiornamento a livello di codice di fogli di lavoro Excel.

L'esportazione CSV è semplice, facile da implementare e veloce. Tuttavia, c'è un potenziale problema degno di nota. Excel (fino al 2007) non conserva gli zeri iniziali nei file CSV. Ciò genererà codici postali, ID prodotto e altri dati testuali contenenti valori numerici. Esiste un trucco che consentirà a Excel di importare correttamente i valori (utilizzando i delimitatori e i valori di prefisso con il segno =, se ricordo bene, ad es., = & Quot; 02052 & Quot;, ...). Se hai utenti che eseguiranno attività di post-elaborazione con CSV, devono essere consapevoli del fatto che devono cambiare il formato in XLS e non salvare il file in CSV. In tal caso, gli zeri iniziali andranno persi per sempre.

Per anni ho usato JExcel per questo, un eccellente progetto Java open source. È stato anche in grado di usare .NET usando J # per compilarlo, e ho anche avuto un grande successo con esso in questa incarnazione. Tuttavia, recentemente ho dovuto migrare il codice su .NET nativo per supportare un'applicazione IIS a 64 bit in cui creo l'output di Excel. La versione J # a 32 bit non viene caricata.

Il codice per CSharpJExcel è LGPL ed è attualmente disponibile alla questa , mentre ci prepariamo per distribuirlo sul sito JExcel SourceForge. Si compilerà con VS2005 o VS2008. Gli esempi nella documentazione originale di JExcel passeranno piuttosto intatti alla versione .NET.

Spero che sia utile per qualcuno qui.

Ho lavorato a lungo con Excelcellcell e posso davvero consigliarlo. http://www.devtriogroup.com/exceljetcell

  • Prodotto commerciale
  • File Excel XLS & amp; XLSX
  • Basato sul proprio motore in rete pura.

Il seguente sito mostra come esportare una DataTable, DataSet o List < > in un " <<>> corretto; File .xlsx di Excel 2007 (anziché esportare un file .csv e ottenere Excel per aprirlo).

Utilizza le librerie OpenXML, quindi non devi avere Excel installato sul tuo server.

Knowledge Base Mikes - ExportToExcel

Viene fornito tutto il codice sorgente, gratuitamente , nonché un'applicazione demo.

È molto facile aggiungere alle tue applicazioni, devi solo chiamare una funzione, passare un nome file Excel e la tua fonte di dati:

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

Spero che questo aiuti.

Controlla il ExcelPackage , utilizza il formato di file Office Open XML di Excel 2007, è leggero e open source ...

Ho provato CSharpJExcel e non lo consiglierei, almeno fino a quando non sarà disponibile della documentazione. Contrariamente ai commenti degli sviluppatori, non è non una porta nativa diretta.

So che è abbastanza tardi, ma mi sento in dovere di rispondere xPorter (scrittura) e xlReader (lettura) da xPortTools.Net . Abbiamo testato alcune librerie e nulla si è avvicinato in termini di prestazioni (sto parlando di scrivere milioni di righe in pochi secondi qui). Non posso dire abbastanza cose positive di questi prodotti!

Puoi usare Microsoft.Jet.OLEDB.4.0

Abbiamo appena identificato un'esigenza simile. E penso che sia importante considerare l'esperienza dell'utente.

Quasi ci siamo allontanati lungo lo stesso:

  1. Prepara / lavora nel file di foglio di calcolo
  2. Salva file
  3. Importa file
  4. Lavora con i dati nel sistema

... flusso di lavoro

Add-in Express ti consente di creare un pulsante in Excel senza tutto quel noioso pasticcio con VSTO. Quindi il flusso di lavoro diventa:

  1. Prepara / lavora nel file di foglio di calcolo
  2. Importa file (utilizzando il pulsante in Excel )
  3. Lavora con i dati nel sistema

Usa il codice dietro il pulsante usando " native " API di Excel (tramite Add-in Express) e push diretto nel sistema del destinatario. Non puoi ottenere molto più trasparente per lo sviluppatore o l'utente. Vale la pena considerare.

C'è un buon articolo e una biblioteca su CodeProject di Yogesh Jagota:

Libreria di importazione / esportazione XML di Excel

L'ho usato per esportare dati da query SQL e altre origini dati in Excel - funziona bene per me.

Saluti

Potresti provare la seguente libreria, è abbastanza semplice ed è solo un wrapper leggero su Open XML SDK di Microsoft (puoi persino riutilizzare la formattazione, gli stili e persino interi fogli di lavoro da un file Excel secondario): http://officehelper.codeplex.com

Spreadsheetgear è la migliore biblioteca commerciale che abbiamo trovato e che stiamo usando. La nostra azienda offre molte funzionalità avanzate di importazione ed esportazione di Excel e Spreadsheetgear supporta molte funzionalità di Excel avanzate ben oltre qualsiasi cosa tu possa fare con un semplice CSV, ed è veloce. Non è gratuito o molto economico, ma ne vale la pena perché il supporto è eccellente. Gli sviluppatori ti risponderanno effettivamente se riscontri un problema.

Che ne dici della libreria java POI di Apache. Non l'ho mai usato per Excel, ma l'ho usato per Word 2007.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top