Comment créer CSV fichier Excel en C#?
Je suis à la recherche d'une classe pour la création de CSV fichiers Excel.
Fonctionnalités attendues:
- Extrêmement simple à utiliser
- Échappe virgules et les citations ainsi excel gère bien
- Exportations de la date et de l'datetimes dans le fuseau horaire-preuve au format
Connaissez-vous une classe capable de cela?
- mieux poser la question dans la QUESTION de la partie, et ensuite publier votre propre réponse dans la RÉPONSE de la partie. Assurez-vous d'ajouter des tags et mots-clés en question à faire des recherches.
- Merci pour le partage de Chris.
- IMPORTANT: vous devez également ajouter des guillemets quand il y a des RETOURS CHARIOT dans la "valeur".
- Merci @Chris, une suggestion si je peux me permettre, ce code peut jeter un KeyNotFoundException, se référer à ma réponse.
- Son meilleur exemple...mais comment puis-je ajouter deux table dans un seul fichier,signifie que j'ai un tableau de deux lignes et d'autres de la table est de 10 lignes et les deux ont un unique nom de la colonne.Je veux ajouter deux lignes de la table sur le dessus et après une lacune de deux lignes, je veux ajouter un deuxième tableau.
Vous devez vous connecter pour publier un commentaire.
Légèrement différente de la version que j'ai écrit à l'aide de réflexion pour mes besoins. J'ai eu pour exporter une liste d'objets dans un fichier csv. Dans le cas où quelqu'un veut l'utiliser pour l'avenir.
L'utilisation de l'échantillon : (mise à jour par commentaire)
public string Export()
méthode et de changer l'autre méthode pourpublic 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 ont été disponibles en 2011, mais le code actuel semble juste onorthodox pour moi.S'il vous plaît pardonnez-moi
Mais je pense qu'un public open-source référentiel est une meilleure façon de partager du code et de faire des contributions, et des corrections et des ajouts tels que "j'ai fixé ce, je fixe que"
J'ai donc fait un simple git-référentiel du sujet-démarreur du code et de toutes les ajouts:
https://github.com/jitbit/CsvExport
J'ai également ajouté un couple d'utiles corrections moi-même. Tout le monde peut ajouter des suggestions, de la fourche à contribuer etc. etc. etc. Envoyez-moi vos fourches, donc je les fusionner en arrière dans le repo.
PS. J'ai posté tous les avis de droits d'auteur pour Chris. @Chris si vous êtes contre cette idée, laissez-moi savoir, je vais le tuer.
Une autre bonne solution à lire et à écrire CSV fichiers est filehelpers (open source).
Comment sur l'utilisation de la chaîne.Rejoindre la place de tous les Boucles foreach?
String.Join("," , List<string>)
fonctionne aussi.Si quelqu'un souhaite que je me suis converti à une méthode d'extension sur IEnumerable:
excellent travail sur cette classe. Simple et facile à utiliser. J'ai modifié la classe d'inclure un titre dans la première ligne de l'exportation; pensé que je voudrais partager:
utilisation:
classe:
il y a une bibliothèque libre pour CSV que vous pouvez obtenir à l'aide de nuget: http://joshclose.github.io/CsvHelper/
J'ai ajouté ExportToStream de sorte que le csv ne pas avoir à les enregistrer sur le disque dur.
J'ai ajouté
Code précédent ne fonctionne pas avec les vieux .NET versions. Pour la version 3.5 du framework utiliser cette autre version:
Merci beaucoup pour ça!
J'ai modifié la classe:
les retours à la ligne (\n \r \n\r) dans
MakeValueCsvFriendly
Code:
Vous pouvez également utiliser ADO pour ce faire: http://weblogs.asp.net/fmarguerie/archive/2003/10/01/29964.aspx
De la classe d'origine ont un problème, et c'est si vous voulez ajouter une nouvelle colonne, vous recevrez KeyNotFoundException sur la méthode d'Exportation. Par exemple:
Pour résoudre ce problème, et en utilisant le @KeyboardCowboy idée de l'utilisation de la réflexion, j'ai modifié le code permettant 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 voulez écrire de la même catégorie, j'ai créé la classe générique CsvWriter.cs, qui a une meilleure performance de l'utilisation de la RAM et idéal pour l'écriture de gros fichiers.De Plus, il permet d'ajouter des formateurs pour le type de données que vous voulez. Un exemple d'utilisation:
Vous devez seulement 1 fonction pour ce faire.
Que vous avez à faire est de créer un dossier dans votre explorateur de solutions et de stocker le fichier csv et ensuite exporter ce fichier à l'utilisateur.
Que dans mon cas, j'ai un dossier de téléchargements. J'ai d'abord exporter tout mon contenu de ce répertoire et de l'exporter vers l'utilisateur. Pour la réponse.fin de la manipulation, j'ai utilisé le ThreadAbortException. C'est donc un 100% authentique et de travail de la fonction dans ma solution.