Comment puis-je créer un fichier Excel (.XLS et .XLSX) le fichier en C# sans l'installation de Microsoft Office?
Comment puis-je créer une feuille de calcul Excel avec C# sans exiger Excel soit installé sur la machine qui exécute le code?
- L' "...sans l'installation de Ms Office?" une partie de la question a l'air très professionnel. Vous pouvez générer n'importe quel type de fichier à partir d'un programme C# (avec un
xls
ouxlsx
fichier en cours de l'un d'eux). Ce n'est pas une exigence qu'il existe un programme sur votre ordinateur qui peut lire, dire, binaire). - Le "sans exiger de Excel doit être installé" morceau n'a rien à voir avec le fait d'être professionnel. C'est à propos de dépendances. Le texte original de la question a été formulée ainsi: "Idéalement, je voudrais open source donc je n'ai pas pour ajouter un tiers des dépendances à mon code, et je voudrais éviter d'utiliser Excel directement pour créer le fichier (à l'aide de OLE Automation.)" Il est malheureux que la question a été considérablement simplifié.
- C'est une bonne question. Je ne sais pas pourquoi il est fermé. Les gars... allez...
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser une bibliothèque appelée ExcelLibrary. C'est un logiciel gratuit, open source bibliothèque posté sur Google Code:
ExcelLibrary
Ce qui semble être un port de l'PHP ExcelWriter que vous avez mentionné ci-dessus. Il n'écrira pas sur le nouveau .format xlsx encore, mais ils sont de travailler sur l'ajout de cette fonctionnalité dans.
C'est très simple, petit et facile à utiliser. Et en Plus il a un DataSetHelper qui vous permet d'utiliser des jeux de données et les tables de données de travailler facilement avec des données Excel.
ExcelLibrary semble toujours que de travail pour les plus âgés (format Excel.les fichiers xls), mais peut-être ajouter le support dans le futur pour les nouveaux 2007/2010 formats.
Vous pouvez également utiliser EPPlus, qui ne fonctionne que pour Excel 2007/2010 les fichiers au format (.fichiers xlsx). Il y a aussi NPOI qui fonctionne avec les deux.
Il y a quelques bugs à chaque bibliothèque comme indiqué dans les commentaires. En tout, EPPlus semble être le meilleur choix que le temps passe. Il semble être plus activement mis à jour et documenté.
Aussi, comme le fait remarquer @АртёмЦарионов ci-dessous, EPPlus a un support pour les Tableaux croisés dynamiques et ExcelLibrary peut avoir un certain soutien (Tableau croisé dynamique problème dans ExcelLibrary)
Voici quelques liens pour référence rapide:
ExcelLibrary - GNU Lesser GPL
EPPlus - GNU Lesser General Public License (LGPL)
NPOI - Licence Apache
Voici un exemple de code pour ExcelLibrary:
Voici un exemple de prise de données à partir d'une base de données et la création d'un classeur à partir d'elle. Notez que le ExcelLibrary code est la seule ligne du bas:
De la création du fichier Excel est aussi simple que ça. Vous pouvez également créer manuellement des fichiers Excel, mais au-dessus de la fonctionnalité est ce qui m'a vraiment impressionné.
Si vous êtes heureux avec le format xlsx, essayer de mon projet GitHub, EPPlus. Cela a commencé avec la source de ExcelPackage, mais aujourd'hui, c'est une réécriture totale.
Il prend en charge les plages, la cellule de style, des graphiques, des formes, des images, des plages nommées, filtre automatique et un tas d'autres choses.
LoadFromCollection<T>
,LoadFromDataTable
etc. (trouvé via ici)J'ai utilisé avec succès les projets open source suivants:
ExcelPackage pour des formats OOXML (Office 2007)
NPOI pour .Format XLS (Office 2003). NPOI 2.0 (Bêta) prend également en charge XLSX.
Prendre un coup d'oeil à mon blog:
La création de feuilles de calcul Excel .XLS et .XLSX en C#
NPOI avec Excel de Tableau et de Graphique dynamique
Et ce sur l'utilisation de Open XML SDK 2.0 pour Microsoft Office?
Quelques avantages:
Liens:
Vous pouvez utiliser OLEDB pour créer et manipuler des fichiers Excel. Vérifiez ceci: La lecture et l'Écriture Excel à l'aide de OLEDB.
Exemple typique:
MODIFIER - Quelques liens:
La solution commerciale, SpreadsheetGear pour .NET va le faire.
Vous pouvez voir en direct ASP.NET (C# et VB) des échantillons ici et télécharger une version d'évaluation ici.
Avertissement: je possède SpreadsheetGear LLC
Quelques options que j'ai utilisé:
Si XLSX est un must: ExcelPackage est un bon début, mais il est mort à l'arrêt lorsque le développeur de cesser de travailler sur elle. ExML ramassé à partir de là, et ajouté quelques fonctionnalités. ExML n'est pas une mauvaise option, je suis toujours à l'utiliser dans un couple de production de sites web.
Pour tous mes nouveaux projets, mais, je suis en utilisant NPOI, l' .NET port de Apache POI.
NPOI 2.0 (Alpha) prend également en charge XLSX.
Extrêmement léger option peut être d'utiliser des tables HTML. Il suffit de créer une tête, un corps, et les balises de tableau dans un fichier et l'enregistrer comme un fichier avec une .extension xls. Il y a Microsoft attributs spécifiques que vous pouvez utiliser pour le style de la sortie, y compris les formules.
Je me rends compte que vous ne pouvez pas être ce codage dans une application web, mais voici un exemple de la composition d'un fichier Excel via un tableau HTML. Cette technique pourrait être utilisée si vous avez été codage d'une application console, application de bureau ou de service.
Vous pouvez utiliser ExcelXmlWriter.
Il fonctionne très bien.
Si vous êtes à la création de fichiers Excel 2007/2010 donner à ce projet open source d'essayer: https://github.com/closedxml/closedxml
En fait vous pourriez vouloir vérifier la l'interopérabilité des classes. Vous dites non OLE (ce qui n'est pas), mais l'interopérabilité des classes sont très faciles à utiliser.
Vous pourriez être impressionné si vous n'avez pas essayé.
S'il vous plaît être averti de Microsoft position sur ce:
Ici est totalement gratuit C# de la bibliothèque, qui vous permet d'exporter à partir d'un
DataSet
,DataTable
ouList<>
en un véritable Excel 2007 .fichier xlsx, à l'aide de l'OpenXML bibliothèques:http://mikesknowledgebase.com/pages/CSharp/ExportToExcel.htm
L'intégralité du code source est fourni gratuitement avec les instructions, et une démo de l'application.
Après l'ajout de cette classe à votre application, vous pouvez exporter vos données vers Excel en une seule ligne de code:
Il ne va pas beaucoup plus simple que ça...
Et il n'a même pas besoin d'Excel pour être présent sur votre serveur.
Vous pourriez envisager la création de vos fichiers à l'aide de la Feuille de calcul XML 2003 format. C'est un simple format XML à l'aide d'un bien documenté schéma.
Vous pouvez prendre un coup d'oeil à GemBox.Feuille de calcul.
Ils ont une version gratuite avec toute les fonctionnalités mais limitée à 150 lignes par feuille et 5 feuilles par classeur, si cela relève de vos besoins.
Je n'ai pas eu besoin de l'utiliser moi-même encore, mais ne semblent intéressants.
Syncfusion Essentiel XlsIO pouvez le faire. Il n'a pas de dépendance de Microsoft office et dispose également d'un soutien spécifique pour les différentes plates-formes.
Exemple de Code:
L'ensemble des contrôles est disponible gratuitement sur l' communauté de licence programme si vous êtes admissible (moins de 1 million de dollars en revenus). Note: je travaille pour Syncfusion.
Bien,
vous pouvez également utiliser une bibliothèque tierce comme Aspose.
Cette bibliothèque, qui a l'avantage de ne pas nécessiter Excel doit être installé sur votre machine, ce qui serait l'idéal dans votre cas.
OpenXML est également une bonne alternative qui permet d'éviter l'installation de MS Excel sur le Serveur.Le SDK Open XML 2.0 fourni par Microsoft simplifie la tâche de manipulation de XML Ouvert les paquets et les sous-jacents Open XML schéma des éléments à l'intérieur d'un package. L'Open XML de l'Interface de Programmation d'Application (API) qui encapsule les nombreuses tâches courantes que les développeurs effectuent sur Open XML paquets.
Vérifier cela OpenXML: Alternative qui permet d'éviter l'installation de MS Excel sur le Serveur
Les différents XML Office 2003 bibliothèques disponibles fonctionner assez bien pour les petits fichiers excel. Cependant, je trouve la taille d'un grand classeur enregistré au format XML à être un problème. Par exemple, un classeur, je travaille à ce que serait 40 mo d'espace dans la nouvelle (et, certes, plus serrés) format XLSX devient un 360MB fichier XML.
En ce qui concerne ma recherche m'a pris, il y a deux packages qui permettent de sortie pour les plus âgés les formats de fichiers binaires. Ils sont:
Ne sont ni bon marché (500USD et 800USD respectivement, je pense). mais à la fois le travail indépendant de Excel lui-même.
Ce que je serais curieux de savoir le Excel module de sortie pour les goûts de OpenOffice.org. Je me demande si ils peuvent être portés de Java pour .Net.
Je suis d'accord sur la génération de XML, feuilles de calcul, voici un exemple sur la façon de faire pour C# 3 (tout le monde des blogs à ce sujet dans VB 9 :P) http://www.aaron-powell.com/linq-to-xml-to-excel
J'ai tout récemment utilisé FlexCel.NET et l'a trouvé pour être une excellente bibliothèque! Je ne dis pas que les propos trop grand nombre de produits logiciels. Aucun point en donnant à l'ensemble de l'argumentaire de vente ici, vous pouvez lire toutes les fonctionnalités sur leur site web.
C'est un produit commercial, mais vous obtenez le plein de la source si vous l'achetez. Donc, je suppose que vous pourriez compiler dans votre assemblée, si tu le voulais vraiment. Sinon, c'est juste un assemblage de xcopy - pas de configuration ou l'installation, ou quelque chose comme ça.
Je ne pense pas que vous trouverez de toute façon de le faire sans tiers des bibliothèques .NET framework, évidemment, n'a pas intégré dans le support et de OLE Automation est juste tout un monde de douleur.
Voulez juste ajouter une autre référence à un tiers solution qui répond directement à votre question: http://www.officewriter.com
(Disclaimer: je travaille pour SoftArtisans, la société qui fait de OfficeWriter)
J'ai écrit un code simple pour exporter l'ensemble de données d'excel sans l'aide d'excel objet à l'aide de Système.IO.StreamWriter.
Ci-dessous est le code qui permettra de lire toutes les tables des bases de données et de les écrire sur les feuilles une par une. J'ai pris l'aide de cet article.
IKVM + POI
Ou, vous pouvez utiliser l'Interopérabilité ...
Voici une façon de le faire avec LINQ to XML, complète avec des exemples de code:
Rapidement Importer et d'Exporter des Données Excel avec LINQ to XML
C'est un peu complexe, puisque vous devez importer les espaces de noms et ainsi de suite, mais permet d'éviter toute dépendance externe.
(Aussi, bien sûr, c'est VB .NET, C#, mais vous pouvez toujours isoler le VB .NET des trucs dans son propre projet pour utiliser les Littéraux XML, et faire tout le reste en C#.)
Certaines 3ème partie de la composante vendeurs comme Infragistics ou Syncfusion fournir de très bonnes Excel capacités d'exportation qui ne nécessite pas de Microsoft Excel doit être installé.
Depuis ces vendeurs fournissent également avancée de l'INTERFACE utilisateur de la grille des composants, ces composants sont particulièrement pratique si vous souhaitez que le style et la mise en page d'un export excel pour imiter l'état actuel de la grille dans l'interface utilisateur de votre application.
Si votre exportation est destiné à être exécuté côté serveur avec l'accent sur les données exportées et sans lien avec l'INTERFACE utilisateur, puis j'irais pour l'un de l'open-source et gratuit options (par exemple, ExcelLibrary).
J'ai déjà participé à des projets qui ont tenté d'utiliser côté serveur automation sur la suite Microsoft Office. Basé sur cette expérience, je recommande vivement contre cette approche.
Salut cette solution est d'exporter votre affichage de la grille de votre fichier excel, il peut vous aider
Vous pouvez créer bien mis en forme de fichiers Excel à l'aide de cette bibliothèque:
http://officehelper.codeplex.com/documentation
Voir ci-dessous, exemple:
où l'échantillon ressembler à ceci:
Le plus simple et le plus rapide de créer un fichier Excel à partir de C# est l'utilisation de l'Open XML Outil de Productivité. L'Open XML de la Productivité de l'Outil est livré avec le SDK Open XML d'installation. L'outil inverse ingénieurs importe quel fichier Excel dans le code C#. Le code C# peut ensuite être utilisé pour re-générer le fichier.
Une vue d'ensemble du processus est:
DesiredLook.xlsx
.DesiredLook.xlsx
et cliquez sur le Refléter Code bouton en haut.Comme un bonus, cette méthode fonctionne pour tous les fichiers Word et PowerPoint. Tant que développeur C#, vous pourrez ensuite modifier le code pour l'adapter à vos besoins.
J'ai développé une simple d'application WPF sur github qui sera exécuté sur Windows pour cela. Il y a un espace réservé à la classe appelée
GeneratedClass
où vous pouvez coller le code généré. Si vous revenir à la version du fichier, il va générer un fichier excel comme ceci:Utile automatisation d'Excel en C# , u peut trouver sur le lien suivant.
http://csharp.net-informations.com/excel/csharp-excel-tutorial.htm
bolton.
Coup d'œil aux exemples comment créer des fichiers Excel.
Il y a des exemples dans C# et VB.NET
Il gère XSL XSLX et CSV fichiers Excel.
Avez-vous déjà essayé sylk?
Nous avons utilisé pour générer excelsheets en asp classique que sylk et maintenant nous sommes à la recherche d'une excelgenerater trop.
Les avantages pour sylk, vous pouvez mettre en forme les cellules.
La Java open source de la solution est Apache POI. Peut-être il ya un moyen de l'installation de l'interopérabilité ici, mais je ne sais pas assez sur Java pour répondre à ça.
Quand j'ai exploré ce problème, j'ai fini par utiliser les assemblys Interop.
Vous pouvez l'écrire en XML en utilisant le XML Excel format et le nom avec .XLS extension de l'ouvrir avec excel. Vous pouvez contrôler la mise en forme (gras, largeurs, etc) dans votre fichier XML de la rubrique.
Il y a un exemple XML à partir de Wikipedia.
J'ai aussi voter pour GemBox.Feuille de calcul.
Est très facile et rapide à utiliser, avec des tonnes d'exemples sur leur site.
Pris mes tâches de reporting sur un tout nouveau niveau de vitesse d'exécution.
Vraiment facile d'une option qui est souvent négligé est de créer un .rdlc rapport à l'aide de Microsoft Reporting et de les exporter au format excel. Vous pouvez concevoir dans visual studio et de générer le fichier à l'aide de:
Vous pouvez également exporter le faire .doc ou .pdf, à l'aide de
"WORDOPENXML"
et"PDF"
respectivement, et il est pris en charge sur plusieurs plates-formes telles que ASP.NET et SSRS.Il est beaucoup plus facile de faire des changements dans un concepteur visuel où vous pouvez voir les résultats, et croyez-moi, une fois que vous commencez le regroupement des données, mise en forme en-têtes de groupe, l'ajout de nouvelles sections, vous ne voulez pas salir avec des dizaines de nœuds XML.
Recherchez ExtremeML. C'est assez cool de la bibliothèque qui vous permet d'utiliser le format OpenXML pour générer des fichiers OpenXML.
C'est aussi un projet OpenSource.
http://www.extrememl.com/
http://www.codeproject.com/KB/cs/Excel_and_C_.aspx <= pourquoi ne pas simplement utiliser le construit en puissance de windows, il suffit d'installer office sur le serveur, toutes les applications que vous installez peuvent être automatisées.
Tellement plus facile de simplement utiliser le natif de méthodes.
Si il est installé, vous pouvez l'utiliser, c'est le plus génial et le sous-utilisés fonctionnalité de windows, il a été Surnommé COM de retour dans le bon vieux temps, et il vous permet d'économiser des tonnes de temps et la douleur.
Ou même plus facile de simplement utiliser la ref lib MS fournitures - http://csharp.net-informations.com/excel/csharp-create-excel.htm
Si vous faites des données de la table ou de la datagridview à partir du code, vous pouvez enregistrer toutes les données à l'aide de cette méthode simple.cette méthode n'est pas recommandée, mais son travail à 100%, même si vous n'êtes pas installer MS Excel dans votre ordinateur.
Il y a quelques temps, j'ai créé une DLL sur le dessus de NPOI. Il est très simple à utiliser:
Vous avez pu lire plus à ce sujet sur ici.
En passant, est 100% open source. N'hésitez pas à utiliser, de modifier et de partager 😉
Pour enregistrer xls en xlsx, nous avons juste besoin de faire appel
SaveAs
méthode deMicrosoft.Office.Interop.Excel
de la bibliothèque. Cette méthode prendra environ 16 paramètres et l'un d'eux est le format de fichier ainsi.De document de Microsoft: Ici
Méthode SaveAs Arguments
L'objet, nous devons passer, c'est comme
Ici, 51, a est valeur d'énumération pour XLSX
Pour SaveAs dans différents formats de fichier, vous pouvez consulter la xlFileFormat
vérifier cela pas besoin de bibliothèques tierces, vous pouvez l'exporter datatable données d'un fichier excel à l'aide de cette
Je suis à l'aide de code suivant pour créer de fichier excel 2007 qui créer le fichier et écrire dans ce fichier, mais quand j'ouvre le fichier mais il me donner l'erreur que
exel ne peut pas ouvrir le fichier bcz fichier peut être coruupted ou l'extension du fichier n'est pas compatible.
mais si j'ai utilisé .xls pour déposer travail des amendes
également consulter le lien
http://dotnet-magic.blogspot.in/2011/10/createformat-excel-file-from-cnet.html
Contact
classe, et que vous n'avez pas dit nous ce que c'est. Si cela fonctionne pour xls, alors les chances sont que vous êtes en train d'écrire du HTML, ce qui n'est pas un vrai fichier Excel. Et votre lien est l'aide de l'interopérabilité, qui comme mentionné ci-dessus ne doit pas être utilisé côté serveur et peut être lente de remplissage de grandes tables.