2009-11-09 22 views
7

Ho bisogno di creare un file excel tramite C#. Ho letto alcuni punti in cui la creazione di un documento XML è il modo più semplice per farlo? Devo avere più schede con nome ed essere in grado di specificare che determinate celle sono testo, data, numerico, ecc. Qualche suggerimento o buon esempio?Creazione di file Excel con C#

risposta

7

è necessario il System.IO.Packaging API - questo vi permetterà di generare documenti .xlsx come descritto in Inserting Values into Excel 2007 Cells. Il formato Excel 2007 può anche essere utilizzato da Excel 2003 e XP con l'installazione gratuita di Microsoft Office Compatibility Pack.

+0

@ wcoenen -nice modifiche, grazie. – Murph

+0

C'è qualche esempio su come creare un Excel con 'System.IO.Packaging'? Non riesco a trovare nulla nella documentazione che si occupa di Excel. –

+0

@IanBoyd c'è un modo migliore (ora) andare a cercare su ClosedXML - che puoi trovare qui: http://closedxml.codeplex.com/ – Murph

1
+0

La libreria CarlosAg è buona ma ha dei limiti ed è effettivamente superata da System.IO. Confezionamento – Murph

+0

e come su spreadsheetgear? –

+0

@astander - Spreadsheetgear è un po 'non libero e quindi non è qualcosa che ho studiato. – Murph

0

Usiamo una suite chiamata Aspose sul posto di lavoro. Ha un grande componente "Cells" completo che fa miracoli per noi.

2

Questo è frustrante difficile da fare, come il meccanismo raccomandato da Microsoft comporta l'uso Office, che va bene sul desktop ma inutile per il web.

Il formato binario di .xls file è proprietà, così Microsoft ha introdotto .xlsx file OpenXML di Office 2007.

Il .xslx è presumibilmente semplice - è solo un contenitore pieno di zip file XML. È possibile aprirlo con System.IO.Packaging e modificarlo con System.Xml. C'è anche un pacchetto di compatibilità per le versioni precedenti di Office.

Sfortunatamente non è semplice: il formato di .xslx è horrible beyond words.

Sembra che abbiano preso il formato binario ottimizzato a 16 bit .xls (progettato originariamente per Windows 3.1) e lo abbia serializzato in XML anziché in binario. Quindi hanno aggiunto cambiamenti davvero stupidi, come i commenti delle celle in realtà sono VML - un formato apparentemente abbandonato con IE5! Hanno anche aggiunto un sacco di numeri magici e metadati all'XML in modo da non poter utilizzare alcun tipo di trasformazione su di esso, quindi stai analizzando il pollone a mano.

Infine hanno reso un asino completo per eseguire il debug e troviamo regolarmente i file .xslx che il pacchetto di compatibilità segnala come corrotti (nessun motivo fornito) ma che la versione recente di Office può aprire correttamente.

C'è una bella libreria open source per questo: SpreadsheetLight. È una libreria molto buona, ma tutto ciò che richiede di approfondire e estendere i file .xslx sarà doloroso.