Comment puis-je écrire dans une feuille de calcul Excel en utilisant Linq?
Je suis en train d'écrire une application où j'ai besoin de récupérer quelques lignes à partir de la base de données et de les exporter dans un tableur Excel. Je suis à l'aide de Linq pour récupérer ces lignes.
Est-il possible de vider ces lignes directement dans leurs homologues dans la feuille Excel (où une cellule dans Excel correspond à une cellule de l'DB)?
source d'informationauteur
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de moyen direct pour connecter ces deux. Il semble que vous voulez LINQ to SQL pour gérer la génération de requêtes, mais pas le mappage O/R (car Excel ne sais pas quoi faire avec les objets qui sortent de LINQ - ils ne ressemblent pas à des lignes de données de plus). Vous pouvez faire que la première partie en appel (datacontext).GetCommand(yourLinqQueryHere), puis en exécutant que le CommandText dans un SqlCommand. Appel ExecuteReader(), puis GetSchemaTable() pour déterminer l'ordre des colonnes. Alors (en supposant que vous êtes de l'automatisation d'Excel) transmettre le résultat de (DbDataReader).GetValues() d'Excel (Feuille de calcul).La rangée[x].Valeurs et il va splat les résultats. Vous pourriez avoir besoin pour réorganiser les choses. Si vous n'êtes pas de l'automatisation d'Excel, vous devez vider les valeurs en utilisant le fournisseur OLEDB Jet pour Excel avec une OleDbConnection, ou utiliser un 3ème partie de la composante de générer la feuille de calcul.
Vous pouvez:
Prendre un coup d'oeil à ce Excel Objet De Données Fournisseur. Je n'ai personnellement pas utilisé les fonctions d'écriture et je l'ai adapté à la lecture pour permettre de faire des ordinal (ainsi que le nom) de la colonne des identifiants, mais il peut être un pas dans la bonne direction. Gardez à l'esprit que vous ne pouvez pas écrire ou de lire des fichiers XLSX, sauf si Excel 2003+ est installé sur la machine cible; standard les fichiers XLS fonctionne sur n'importe quelle zone de Windows.
Ma version adaptée avec ordinale des colonnes peut être trouvé ici. Vous trouverez peut-être nécessaire ou utile pour mettre en œuvre que dans la version actuelle (au lien ci-dessus) si vous décidez d'utiliser le code. Ma version est un hybride de fonctions à partir de la la version 2.0 et 2,5 - il a toutes les fonctionnalité de lecture (avec près de 2,5 mises à niveau), mais aucun écrit. Oh - et à la différence de la version 2.0 ou 2.5, ma version ne requiert pas que la première feuille dans le document Excel est nommée "Feuil1".
Espère que ça aide!
Écrire à Excel XML avec LINQ to XML
Est incroyablement simple, ne nécessite pas de bibliothèques externes, et utilise la réflexion pour transformer n'importe quel IEnumerable dans une feuille de calcul!
http://scottstjohn.wordpress.com/2011/04/02/write-to-excel-xml-with-linq-to-xml/
Décrit par l'auteur, Scott Saint-Jean (je suppose que ce à partir de son URL d' - il n'a pas de bio info sur son site):
J'ai assez bien copié/collé son code dans MyExtensions dans LINQPad et utilisé immédiatement.
La solution la plus rapide sera la création d'un fichier csv:
Excel fonctionne très bien avec les fichiers csv.
Le fait que vous êtes à la récupération de vos données avec LINQ est une sorte de hors de propos. Ce que vous êtes vraiment après une bonne bibliothèque pour écrire Excel. Une fois que vous avez cela, vous pouvez simplement parcourir vos résultats à créer des lignes de votre feuille de calcul Excel.
Autant qu'une bibliothèque, j'ai utilisé NPOIet c'est génial.