Importer et exporter Excel-Quelle est la meilleure bibliothèque? [fermé]
Dans l'un de nos ASP.NET applications en C#, nous prenons une certaine collection de données (Collection subsonique) et l'exportons vers Excel. Nous voulons également importer des fichiers Excel dans un format spécifique. Je cherche une bibliothèque que je peux utiliser à cette fin.
Exigences:
- fichiers Excel 2007 (Excel 2003 prend-il en charge plus de 64k lignes? J'ai besoin de plus que cela.)
- Ne nécessite pas Excel sur le serveur
- prend une collection typée et, si elle le peut, essaie de mettre des champs numériques comme numérique dans Excel.
- fonctionne bien avec des fichiers volumineux (100k à 10M) - assez rapide.
- ne plante pas lors de l'exportation de GUID!
- ne coûte pas un crapload d'argent (pas de bibliothèque d'entreprise comme aspose). Gratuit est toujours génial, mais peut être une bibliothèque commerciale.
Quelle bibliothèque recommandez-vous? Avez-vous utilisé pour de grandes quantités de données? Existe-il d'autres solutions?
En ce moment, j'utilise un outil simple qui génère du HTML qui est chargé par Excel plus tard, mais je je perds certaines capacités, plus Excel se plaint lorsque nous le chargeons. Je n'ai pas besoin de générer des graphiques ou quelque chose comme ça, il suffit d'exporter des données brutes.
Je pense à des fichiers CSV plats, mais Excel est une exigence du client. Je peux travailler avec CSV directement, si j'avais un outil pour convertir vers et depuis Excel. Étant donné Qu'Excel 2007 est un format de fichier xml (et compressé), je suppose que ce type de bibliothèque devrait être facile à trouver. Cependant, ce qui compte le plus pour moi, ce sont vos commentaires et opinions.
EDIT: ironiquement, à mon avis et en suivant la réponse avec le plus de votes, la meilleure bibliothèque Excel import&export N'est pas du tout exportée. Ce n'est pas le cas pour tous les scénarios, mais c'est le mien. Les fichiers XLS ne prennent en charge que 64k lignes. XLSX prend en charge JUSQU'à 1M. les bibliothèques gratuites que j'ai essayées présentent de mauvaises performances (une seconde pour charger une ligne lorsque vous avez 200k lignes). Je n'ai pas essayé ceux payés, car je pense qu'ils sont trop chers pour la valeur qu'ils livrent quand tout ce dont vous avez besoin est un rapide XLSX routine de conversion CSV.
20 réponses
Je vais lancer ma main pour les fichiers CSV plats, ne serait-ce que parce que vous avez le plus grand contrôle sur le code. Assurez-vous simplement de lire dans les lignes et de les traiter une à la fois (lire le document jusqu'à la fin et le fractionnement va manger toute votre mémoire - même avec l'écriture, le diffuser).
Oui, l'Utilisateur devra enregistrer au format CSV dans excel avant de pouvoir le traiter, mais peut-être que cette limitation peut être surmontée en formant et en fournissant des instructions claires sur le la page?
Enfin, lorsque vous exportez vers le client, si vous définissez le type mime sur text/csv, Excel est généralement mappé sur ce type de sorte qu'il semble à l'Utilisateur être un "fichier Excel".
J'ai découvert le SDK Open XML depuis ma réponse originale. Il fournit des classes fortement typées pour les objets de feuille de calcul, entre autres choses, et semble être assez facile à utiliser. Je vais l'utiliser pour les rapports dans un de mes projets. Hélas, la version 2.0 n'est pas censée être publiée avant la fin de 2009 ou 2010.
La nouvelle version D'ExcelPackage est ici http://EPPlus.codeplex.com
Je me bats toujours avec la fonction Exporter vers excel puisque mon application devrait exporter des données vers excel-template 2007
Ce projet me semble bien, et le développeur est très réactif aux bugs et aux problèmes.
J'ai utilisé ClosedXML et cela fonctionne très bien!
ClosedXML facilite la création D'Excel 2007/2010 pour les développeurs fichier. Il fournit un bon moyen orienté objet de manipuler les fichiers (similaire à VBA) sans faire face aux tracas des Documents XML. Il peut être utilisé par n'importe quel langage.net comme C# et Visual Basic (VB).
SpreadsheetGear pour. NET lit et écrit CSV / XLS / XLSX et fait plus.
Vous pouvez voir en direct ASP.NET des échantillons avec le code source C# et VB ici et téléchargez un essai gratuit ici.
Bien sûr, je pense que SpreadsheetGear est la meilleure bibliothèque pour importer / exporter des classeurs Excel ASP.NET - mais je suis partial. Vous pouvez voir ce que nos clients disent sur le côté droit de cette page.
Avertissement: je possède SpreadsheetGear LLC
NPOI pour Excel 2003 Open Source http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html
L'exportation CSV est simple, facile à mettre en œuvre et rapide. Il y a cependant un problème potentiel à noter. Excel (jusqu'en 2007) ne conserve pas les zéros en tête dans les fichiers CSV. Cela va garble codes postaux, ID de produit, et d'autres données textuelles contenant des valeurs numériques. Il y a une astuce qui fera Qu'Excel importera les valeurs correctement (en utilisant des délimiteurs et des valeurs de préfixe avec le signe=, si je me souviens bien, par exemple ..,="02052",...). Si vous avez des utilisateurs qui effectueront des tâches de post-traitement avec le CSV, ils doivent être conscients qu'ils doivent changer le format en XLS et ne pas enregistrer le fichier au format CSV. S'ils le font, les zéros en tête seront perdus pour de bon.
Pendant des années, j'ai utilisé JExcel pour cela, un excellent projet Java open-source. Il était également capable de. net en utilisant J# pour le compiler, et j'ai également eu beaucoup de succès dans cette incarnation. Cependant, récemment, j'ai dû migrer le code vers. net natif pour prendre en charge une application IIS 64 bits dans laquelle je crée une sortie Excel. La version j# 32 bits ne se chargerait pas.
Le code de CSharpJExcel est LGPL et est actuellement disponible sur cette page, alors que nous nous préparons à déployez - le sur le site Jexcel SourceForge. Il compilera avec VS2005 ou VS2008. Les exemples dans la documentation originale de JExcel passeront assez bien intact à la version. net.
Espère que c'est utile à quelqu'un ici.
Je travaille avec excel jetcell depuis longtemps et je peux vraiment le recommander. http://www.devtriogroup.com/exceljetcell
- produit Commercial
- fichiers Excel XLS & XLSX
- basé sur propre moteur En net pur.
Le site suivant montre comment exporter un DataTable, un DataSet ou une List dans un Excel 2007 "approprié".fichier xlsx (plutôt que d'exporter un .fichier csv, et obtenir Excel pour l'ouvrir).
Il utilise les bibliothèques OpenXML, donc vous n'avez pas besoin d'avoir Excel installé sur votre serveur.
Base De Connaissances Mikes-ExportToExcel
Tout le code source est donné, gratuitement , ainsi qu'une application de démonstration.
C'est très facile à ajouter vos propres applications, il vous suffit d'appeler une fonction, en passant un nom de fichier Excel, et votre source de données:
DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);
J'espère que cela aide.
Vérifiez le projet ExcelPackage , il utilise le format de fichier Office Open XML D'Excel 2007, il est léger et open source...
J'ai essayé CSharpJExcel et je ne le recommanderais pas, du moins pas jusqu'à ce qu'il y ait de la documentation disponible. Contrairement aux commentaires des développeurs, c'est pas un port natif droit.
Je sais que c'est assez tard, mais je me sens obligé de répondre xPorter (écriture) et xlReader (Lecture) de xPortTools.Net . nous avons testé pas mal de bibliothèques et rien ne s'est rapproché de la performance (je parle d'écrire des millions de lignes en quelques secondes ici). Ne peut pas dire assez de bonnes choses sur ces produits!
Nous venons d'identifier un besoin similaire. Et je pense qu'il est important de considérer l'expérience utilisateur.
Nous avons presque été détournés le long de la même:
- Préparer / travailler dans un fichier de feuille de calcul
- Enregistrer le fichier
- fichier d'Importation
- travailler avec des données dans le système
... flux de travail
Add-in Express vous permet de créer un bouton dans Excel sans tout ce qui est fastidieux avec VSTO. Ensuite le flux de travail devient:
- Préparer / travailler dans un fichier de feuille de calcul
- importer le fichier (en utilisant le bouton dans Excel )
- travailler avec des données dans le système
Le code derrière le bouton utilise L'API Excel "native" (via Add-in Express) et pousse directement dans le système destinataire. Vous ne pouvez pas obtenir beaucoup plus transparent pour le développeur ou l'utilisateur. Vaut la peine d'examiner.
Il y a un très bon article et bibliothèque sur CodeProject par Yogesh Jagota:
Excel XML Import-Export de la Bibliothèque de
Je l'ai utilisé pour exporter des données à partir de requêtes SQL et d'autres sources de données vers Excel-fonctionne très bien pour moi.
Santé
Vous pouvez essayer la bibliothèque suivante, c'est assez facile et c'est juste un wrapper léger sur le SDK Open XML de Microsoft (vous pouvez même réutiliser le formatage, les styles et même des feuilles de calcul entières à partir d'un fichier Excel secondaire) : http://officehelper.codeplex.com
Spreadsheetgear est la meilleure bibliothèque commerciale que nous avons trouvée et que nous utilisons. Notre société fait beaucoup d'importation et d'exportation excel avancées et Spreadsheetgear prend en charge beaucoup de fonctionnalités excel avancées bien au-delà de tout ce que vous pouvez faire avec CSV simple, et c'est rapide. Ce n'est pas gratuit ou très bon marché mais ça vaut le coup parce que le support est excellent. Les développeurs vous répondront réellement si vous rencontrez un problème.
Que diriez-vous de la bibliothèque Java apache POI. Je ne l'ai pas utilisé pour Excel, mais je l'ai utilisé pour Word 2007.