Je recherche une classe pour créer des fichiers Excel CSV.
Caractéristiques attendues:
- Extrêmement simple à utiliser
- Échappe les virgules et les guillemets pour exceller les gère bien
- Exporte la date et les heures de données au format à l'épreuve du fuseau horaire
Connaissez-vous une classe capable de cela?
Réponses:
Version légèrement différente que j'ai écrite en utilisant la réflexion pour mes besoins. J'ai dû exporter une liste d'objets vers csv. Au cas où quelqu'un voudrait l'utiliser pour l'avenir.
Exemple d'utilisation: (mis à jour par commentaire)
la source
public string Export()
méthode et changer l'autre méthode enpublic string Export(bool includeHeaderLiner = true)
(avec une valeur de paramètre par défaut). Encore une fois, je ne suis pas sûr si les paramètres par défaut étaient disponibles en 2011, mais le code actuel me semble juste orthodoxe.s'il vous plaît, pardonnez-moi
Mais je pense qu'un dépôt public open-source est un meilleur moyen de partager du code et d'apporter des contributions, des corrections et des ajouts tels que "J'ai corrigé ça, j'ai corrigé ça"
J'ai donc créé un simple git-repository à partir du code du topic-starter et de tous les ajouts:
https://github.com/jitbit/CsvExport
J'ai également ajouté moi-même quelques correctifs utiles. Tout le monde pourrait ajouter des suggestions, le bifurquer pour contribuer, etc. etc. etc. Envoyez-moi vos fourchettes pour que je les fusionne dans le repo.
PS. J'ai posté tous les avis de droits d'auteur de Chris. @Chris si vous êtes contre cette idée - faites-moi savoir, je vais la tuer.
la source
Filehelpers (open source) est une autre bonne solution pour lire et écrire des fichiers CSV .
la source
Que diriez-vous d'utiliser string.Join au lieu de toutes les boucles foreach?
la source
String.Join("," , List<string>)
fonctionne aussi.Si quelqu'un souhaite que je convertisse cela en une méthode d'extension sur IEnumerable:
la source
excellent travail sur cette classe. Simple et facile à utiliser. J'ai modifié la classe pour inclure un titre dans la première ligne de l'exportation; pensé que je partagerais:
utilisation:
classe:
la source
il existe une bibliothèque open-source pour CSV que vous pouvez obtenir en utilisant nuget: http://joshclose.github.io/CsvHelper/
la source
J'ai ajouté ExportToStream pour que le csv n'ait pas à enregistrer d'abord sur le disque dur.
la source
J'ai ajouté
Le code précédent ne fonctionne pas avec les anciennes versions .NET. Pour la version 3.5 du framework, utilisez cette autre version:
la source
Merci beaucoup pour ça! J'ai modifié la classe pour:
MakeValueCsvFriendly
Code:
la source
Vous pouvez également utiliser ADO pour ce faire: http://weblogs.asp.net/fmarguerie/archive/2003/10/01/29964.aspx
la source
La classe d'origine a un problème, et c'est si vous souhaitez ajouter une nouvelle colonne, vous recevrez KeyNotFoundException sur la méthode d'exportation. Par exemple:
Pour résoudre ce problème, et en utilisant l'idée @KeyboardCowboy d'utiliser la réflexion, j'ai modifié le code pour permettre d'ajouter des lignes qui n'ont pas les mêmes colonnes. Vous pouvez utiliser des instances de classes anonymes. Par exemple:
Vous pouvez télécharger le code source ici CsvExporter . N'hésitez pas à utiliser et à modifier.
Maintenant, si toutes les lignes que vous souhaitez écrire sont de la même classe, j'ai créé la classe générique CsvWriter.cs , qui a une meilleure utilisation de la RAM de performance et idéale pour écrire de gros fichiers. . Un exemple d'utilisation:
la source
Vous n'avez besoin que d'une seule fonction pour ce faire. Il vous suffit de créer un dossier dans votre explorateur de solutions et d'y stocker le fichier csv, puis d'exporter ce fichier vers l'utilisateur.
Comme dans mon cas, j'ai un dossier à télécharger. Tout d'abord, j'exporte tout mon contenu dans ce répertoire, puis je l'exporte vers l'utilisateur. Pour la gestion de response.end, j'ai utilisé l'exception ThreadAbortException. C'est donc une fonction 100% authentique et fonctionnelle dans ma solution.
la source