2012-04-05 3 views
7

Eventuali duplicati:
Generating an Excel file in ASP.NETcome creare un file "vera" Excel

ecco la mia domanda: Come si a livello di codice creare un file "vera" Excel?

Nota: Non intendo un file CSV, HTML/CSS o XML, intendo un file scritto nello stesso formato utilizzato da Excel per salvare fogli di calcolo.

Sfondo: Sto lavorando a un'applicazione ASP.Net, che include RadGrid di Telerik. Attualmente stiamo utilizzando la funzione ExportToExcel() di RadGrid, ma alcuni dei nostri clienti devono essere in grado di visualizzare queste esportazioni utilizzando Excel Viewer. La funzione di Telerik esporta un file basato su HTML/CSS, che la versione completa di Excel può aprire, ma Excel Viewer non può.

Sono sicuro che è possibile creare un file Excel "vero", ma non sono sicuro da dove cominciare. C'è un SDK che potrebbe aiutarmi a fare questo?

Qualsiasi suggerimento sarebbe apprezzato. Grazie in anticipo.

+0

Sto cercando anche la risposta. Un'opzione è usare Excel per servizi di interoperabilità. Ma questo usa un'istanza di Excel che è molto lenta. –

risposta

13

È possibile utilizzare l'interoperabilità da Excel come RedFilter vi ha mostrato, ma ci sono anche alternative open source che non richiede Excel per essere installato sul vostro pc al lavoro. Può essere utile se hai un progetto asp.net distribuito su un server che non ha Excel.

EPPlus è una buona libreria. http://epplus.codeplex.com/

Persino, uso Koogra. http://sourceforge.net/projects/koogra/?_test=b

+4

+1 per EPPlus, l'ho usato sia per creare sia per aprire/leggere i file. Funziona alla grande. –

+1

È per i file 2007/2010, probabilmente gestisce solo file * .XLSX, ma non funziona con il formato file XLS. Comunque, va bene finché non è necessario usarli :). –

+0

EPPlus sembra essere quello che sto cercando. Grazie, Amaranto! – ks78

1

È possibile ottenere le specifiche Office File Formats da Microsoft, ma i formati binari sono orribilmente complessi in alcuni punti. Probabilmente potresti cavartela con un'implementazione minima. Ecco lo .xls binary file format spec. Suggerirei di utilizzare i nuovi formati XML utilizzati da Office 2007 e 2010: vedere questo WikiPedia article on the Office Open XML standard.

L'unica altra opzione che viene in mente è l'automazione di Excel e il suo ottenimento per produrre il file.

+0

Se Excel Viewer potrebbe aprire i nuovi formati XML, sarei entusiasta. - ma non sembrano essere supportati. – ks78

+0

Se i client sono disponibili per l'aggiornamento all'ultimo Visualizzatore Excel qui: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=10 (che in base alla pagina di download può visualizzare i file .xlsx) allora forse è un problema risolto? Ho anche aggiornato la mia risposta con un collegamento diretto alla specifica binaria .xls nel caso in cui non ci sia modo di evitarlo. –

1

È possibile utilizzare interop (come descritto in un'altra risposta), ma non è ufficialmente supportato nell'ambiente server.

Un'altra soluzione sarebbe utilizzando OpenXML SDK 2.0, che dovrebbe consentire di creare i file XLSX. Può essere scaricato da qui: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124. Se hai deciso di utilizzare questa soluzione, ti consiglio di dare un'occhiata a Strumento di produttività OpenXML SDK 2.0 disponibile anche lì.

+0

Ho visto OpenXML, ma può generare un file Excel "vero"? Sembra che generi file basati su XML che la versione completa di Excel può leggere, ma Excel Viewer non lo farebbe. Ho sbagliato? – ks78

+0

Dovrei essere in grado di creare file XLSX validi e * reali *, che è il formato utilizzato da Office 2007 e versioni successive. Non ho provato questo, ma dovrebbe funzionare correttamente con entrambi i 2207 (o più recente) Excel di Excel Viewer. Tuttavia, non è in grado di generare file XLS (formato utilizzato da Office 2003 e versioni precedenti). –

+0

OpenXML è * Formato Microsofts * per file XML – Murph

1

L'ultima versione del ExcelViewer supporta quanto pare i seguenti formati di file:

È possibile aprire solo i file di Excel (.xlsx, .xlsm, xlsb, xltx, .xltm, .xls, .xlt, .xlm e .xlw). Anche se è possibile aprire i file abilitati alla macro (.xlsm, .xltm e.xlm), non sarai in grado di eseguire macro.

Quindi ... i file in formato XML non sono un problema - e quindi la soluzione appropriata è scrivere formati OpenXML. Sfortunatamente non è divertente ... puoi farlo, il toolkit ti permette di decodificare cose ma il codice è orribile.

Quindi, se fossi in me (e lo è stato e lo sarà) guarderei ClosedXML per generare documenti OpenXML - il primo della mia lista per la prossima volta.

Esistono, naturalmente, anche numerose opzioni commerciali: l'idoneità dipende dal caso d'uso specifico.

Per tutto ciò, la risposta "giusta" è generare documenti OpenXML (.xlsx) con qualunque mezzo.


Edit: Il riferimento a: ExcelXMLWriter era sbagliato - che non aiuta la sua ExcelML

+0

Grazie. Potrei anche provare OpenXML. Il formato XML produce lo stesso di "ExcelML"? Telerik può esportare anche in quel formato, ma Excel Viewer non può aprirlo. – ks78

1

Apache POI è una libreria popolare e affidabile Java per la scrittura di file di Excel. NPOI è un'altra buona opzione (http://npoi.codeplex.com) per scrivere file Excel con .NET.