2009-11-09 4 views
7

Je dois créer un fichier Excel via C#. J'ai lu quelques endroits que la création d'un document XML est le moyen le plus facile de le faire? J'ai besoin d'avoir plusieurs onglets nommés et être capable de spécifier que les cellules particulières sont le texte, l'heure de la date, numérique, etc ... Des suggestions ou de bons exemples?Création de fichiers Excel avec C#

Répondre

7

Vous devez l'API System.IO.Packaging - cela vous permettra de générer des documents .xlsx comme décrit dans Inserting Values into Excel 2007 Cells. Le format Excel 2007 peut également être utilisé par Excel 2003 et XP avec le Microsoft Office Compatibility Pack installé.

+0

@wcoenen -nice modifications, merci. – Murph

+0

Existe-t-il un exemple de création d'un fichier Excel avec 'System.IO.Packaging'? Je ne trouve rien dans la documentation traitant d'Excel. –

+0

@IanBoyd il ya une meilleure façon (maintenant) aller voir ClosedXML - que vous pouvez trouver ici: http://closedxml.codeplex.com/ – Murph

1
+0

La bibliothèque de CarlosAg est bonne mais a des limitations et est effectivement dépassée par System.IO. Emballage – Murph

+0

et qu'en est-il de spreadsheetgear? –

+0

@astander - Spreadsheetgear est un peu pas libre et donc pas quelque chose que j'ai enquêté. – Murph

0

Nous utilisons une suite appelée Aspose au travail. Il a un grand "Cellules" composant qui fonctionne à merveille pour nous.

2

Ceci est frustrante difficile à faire, en tant que mécanisme recommandé de Microsoft consiste à utiliser Office, ce qui est bien sur le bureau mais inutile pour le web.

Le format binaire des fichiers .xls est propriété, de sorte que Microsoft introduit .xlsx fichiers OpenXML dans Office 2007.

Le .xslx est censé être simple - il est juste un conteneur zip complet de fichiers XML. Vous pouvez l'ouvrir avec System.IO.Packaging et l'éditer avec System.Xml. Il existe même un pack de compatibilité pour les anciennes versions de bureau.

Malheureusement, ce n'est simplement pas simple - le format de .xslx est horrible beyond words.

Il semble qu'ils ont pris le format binaire optimisé 16 bits .xls (conçu à l'origine pour Windows 3.1) et le série au format XML au lieu de binaire. Ensuite, ils ont ajouté des changements vraiment stupides, comme les commentaires de cellules sont en fait VML - un format soi-disant abandonné avec IE5! Ils ont également ajouté une tonne de nombres magiques et de méta-données au XML, de sorte que vous ne pouvez utiliser aucun type de transformation, donc vous êtes en train d'analyser ce meunier à la main.

Enfin, ils ont fait un âne complet pour déboguer, et nous trouvons régulièrement des fichiers .xslx que le pack de compatibilité signale comme corrompu (aucune raison donnée), mais cette version récente d'Office peut ouvrir très bien.

Il existe une bibliothèque open source très intéressante: SpreadsheetLight. C'est une très bonne bibliothèque, mais tout ce qui nécessite de creuser et d'étendre les fichiers .xslx va être douloureux.