web-dev-qa-db-fra.com

Importer et exporter Excel - Quelle est la meilleure bibliothèque?

Dans l'une de nos applications ASP.NET en C #, nous prenons une certaine collecte de données (collection SubSonic) et l'exportons vers Excel. Nous souhaitons é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 64 000 lignes? Il me faut plus que cela.)
  • Ne nécessite pas Excel sur le serveur
  • Prend une collection dactylographiée et, s’il le peut, tente de placer des champs numériques sous forme numérique dans Excel.
  • Fonctionne bien avec des fichiers volumineux (100k à 10M) - assez rapidement.
  • Ne pas planter lors de l'exportation de GUID!
  • Ne coûte pas beaucoup 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? L'avez-vous utilisé pour de grandes quantités de données? Y a-t-il d'autres solutions?

Pour le moment, j'utilise un outil simple qui génère du code HTML chargé ultérieurement par Excel, mais je perds certaines fonctionnalités. De plus, Excel se plaint lorsque nous le chargeons. Je n'ai pas besoin de générer de graphiques ou quoi que ce soit, mais d'exporter des données brutes.

Je pense aux fichiers CSV plats, mais Excel est une exigence du client. Je peux travailler directement avec CSV, si j'avais un outil pour convertir vers et depuis Excel. Étant donné qu'Excel 2007 est un format de fichier basé sur 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 vos opinions.


EDIT: Ironiquement, à mon avis et après avoir répondu à la question avec le plus grand nombre de votes, la meilleure bibliothèque d’import & export Excel n’est pas une exportation. Ce n'est pas le cas pour tous les scénarios, mais c'est pour le mien. Les fichiers XLS ne prennent en charge que 64 000 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 200 000 lignes). Je n'ai pas essayé les solutions payantes, car j'estime qu'elles sont trop chères pour la valeur qu'elles offrent lorsque tout ce dont vous avez besoin est une routine de conversion XLSX <-> CSV rapide.

174
Jason Kealey

Je vais me lancer pour les fichiers csv à plat, 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 à la fin et le fractionnement grignotera toute votre mémoire - comme pour l'écriture, diffusez-le).

Oui, l'utilisateur devra enregistrer au format CSV dans Excel avant de pouvoir le traiter, mais peut-on surmonter cette limitation en formant et en donnant des instructions claires sur 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 apparaît à l'utilisateur qu'il s'agit d'un 'fichier Excel'.

38
tsimon

J'ai découvert le Open XML SDK depuis ma réponse d'origine. Il fournit, entre autres, des classes fortement typées pour les objets de feuille de calcul et semble être assez facile à utiliser. Je vais l'utiliser pour des rapports dans l'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.

40
cdonner

la nouvelle version de ExcelPackage est ici http://EPPlus.codeplex.com

Je me bats toujours avec la fonction d'exportation vers Excel car mon application doit exporter certaines données vers Excel-template 2007.

ce projet me semble bien et le développeur est très sensible aux bogues et aux problèmes.

34
Mohannad Otaibi

J'ai utilisé ClosedXML et cela fonctionne très bien!

ClosedXML facilite la création de fichiers Excel 2007/2010 par les développeurs. Il fournit une méthode conviviale orientée objet pour manipuler les fichiers (similaire à VBA) sans traiter les tracas liés aux documents XML. Il peut être utilisé par n’importe quel langage .NET comme C # et Visual Basic (VB).

17
Druid

SpreadsheetGear for .NET lit et écrit en CSV/XLS/XLSX et en fait plus.

Vous pouvez voir des exemples ASP.NET en direct avec C # et VB code source ici et télécharger un essai gratuit ici .

Bien sûr, je pense que SpreadsheetGear est la meilleure bibliothèque pour importer/exporter des classeurs Excel dans ASP.NET - mais je suis partial. Vous pouvez voir ce que certains de nos clients disent à droite de cette page .

Disclaimer: Je possède SpreadsheetGear LLC

14
Joe Erickson
13
stormwild

L'exportation au format CSV est simple, facile à mettre en œuvre et rapide. Il existe toutefois un problème potentiel à noter. Excel (jusqu'en 2007) ne conserve pas les zéros dans les fichiers CSV. Cela brouillerait les codes postaux, les identifiants de produits et d’autres données textuelles contenant des valeurs numériques. Il existe une astuce qui permet à Excel d'importer correctement les valeurs (en utilisant des délimiteurs et des valeurs de préfixe avec le signe =, si mes souvenirs sont exacts, par exemple .., = "02052", ...). Si vous avez des utilisateurs qui effectueront des tâches de post-traitement avec le fichier CSV, ils doivent savoir qu'ils doivent modifier le format au format XLS et ne pas enregistrer le fichier au format CSV. S'ils le font, les zéros au début seront définitivement perdus.

5
cdonner

J'ai utilisé Flexcel dans le passé et c'était génial. Mais c'était plus pour créer et mettre à jour par programme des feuilles de calcul Excel.

5
Duncan

Pendant des années, j'ai utilisé JExcel pour cela, un excellent projet open-source Java. Il était également .NET-capable en utilisant J # pour le compiler, et j’ai également eu un grand succès avec cela dans cette incarnation. Cependant, j'ai récemment eu besoin de 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 disponible actuellement à la page this , pendant que nous préparons son déploiement sur le site JExcel SourceForge. Il compilera avec VS2005 ou VS2008. Les exemples de la documentation originale de JExcel seront quasiment inchangés dans la version .NET.

J'espère que c'est utile pour quelqu'un ici.

4
Chris Laforet

Le site suivant montre comment exporter un DataTable, un DataSet ou un List <> dans un fichier "bon" Excel 2007 .xlsx (plutôt que d'exporter un fichier .csv et de le faire ouvrir par Excel).

Il utilise les bibliothèques OpenXML, de sorte que vous n’avez pas besoin d’installer Excel sur votre serveur.

Base de connaissances Mikes - ExportToExcel

Tout le code source est fourni gratuitement , ainsi qu’une application de démonstration.

Il est très facile d'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 t'aides.

3
Mike Gledhill

Je travaille avec Excel Jetcell depuis longtemps et je le recommande vraiment. http://www.devtriogroup.com/exceljetcell

  • Produit commercial
  • Fichiers Excel XLS & XLSX
  • Basé sur son propre moteur en pur réseau.
3
Robert Tyson

Vous pouvez utiliser Microsoft.Jet.OLEDB.4.0

2
RG.

Vérifiez le projet ExcelPackage , il utilise le format de fichier Office Open XML d'Excel 2007, il est léger et open source ...

2
CMS

J'ai essayé CSharpJExcel et je ne le recommanderais pas, du moins pas avant qu'il y ait de la documentation disponible. Contrairement aux commentaires des développeurs, il s’agit pas d’un port natif direct.

2
user483711

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 n’a été comparable à la performance (je parle ici d’écrire des millions de lignes en quelques secondes). Je ne peux pas dire assez de bonnes choses sur ces produits!

2
DanP

Nous venons d'identifier un besoin similaire. Et je pense qu'il est important de prendre en compte l'expérience utilisateur.

Nous avons failli nous égarer le long de la même chose:

  1. Préparer/travailler dans un fichier tableur
  2. Enregistrer le fichier
  3. Importer le fichier
  4. 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 travail fastidieux avec VSTO. Ensuite, le flux de travail devient:

  1. Préparer/travailler dans un fichier tableur
  2. Importer un fichier (en utilisant le bouton dans Excel )
  3. Travailler avec des données dans le système

Demandez au code derrière le bouton d'utiliser l'API Excel "native" (via Add-in Express) et Push directement dans le système du destinataire. Vous ne pouvez pas obtenir beaucoup plus de transparence pour le développeur ou l'utilisateur. Vaut la peine d'être considéré.

1
Program.X

Vous pouvez essayer la bibliothèque suivante, elle est assez simple et n’est qu’un simple wrapper au-dessus du 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

1
aron.sinoai

Il y a un très bon article et une bonne bibliothèque sur CodeProject de Yogesh Jagota:

Bibliothèque Excel XML Import-Export

Je l'ai utilisé pour exporter des données de requêtes SQL et d'autres sources de données vers Excel. Cela fonctionne parfaitement pour moi.

À votre santé

1
marc_s

Spreadsheetgear est la meilleure bibliothèque commerciale que nous ayons trouvée et que nous utilisons. Notre société effectue un grand nombre d'importations avancées d'exportation et d'exportation et Spreadsheetgear prend en charge de nombreuses fonctionnalités Excel avancées bien au-delà de tout ce que vous pouvez faire avec un simple CSV, et c'est rapide. Ce n’est pas gratuit ni très bon marché, mais cela en vaut la peine car le support est excellent. Les développeurs vont effectivement vous répondre si vous rencontrez un problème.

0
pilavdzice

Que diriez-vous de la bibliothèque Apache POI Java. Je ne l'ai pas utilisé pour Excel, mais je l'ai utilisé pour Word 2007.

0
harijay