J'utilise le projet LinqToExcel développé par le MIT et hébergé sur Google Code à l'adresse suivante http://code.google.com/p/linqtoexcel/wiki/UsingLinqToExcel .
Cela semble assez simple et élégant. J'ai pu réécrire une méthode qui utilisait la bibliothèque d'interopérabilité MS Excel et le code était environ 1/3 de la taille.
Cependant, j'ai rencontré un problème lorsque j'ai essayé d'interroger une plage de cellules. VS2008 le détecte comme une erreur de syntaxe :
//These lines are fine
IEnumerable<string> names = new List<string>();
var excel = new Excel.ExcelQueryFactory(_excelFilePath);
//This line shows a syntax error starting from c[0]
names = from c in excel.WorksheetRange("A1", "AI1", headerName)
c[0] == "IN"
select c;
La ligne - c[0] == "IN" - semble tout simplement étrange. Elle devrait saisir la valeur de la cellule A1. Si je supprime "c[0] ==IN", l'erreur de syntaxe disparaît, mais le programme ne renvoie aucun résultat.
Cette syntaxe est-elle correcte ? Le code de la page liée est-il en C# ?
MISE À JOUR : Après avoir obtenu quelques réponses, il semble que le "Où" manquant soit effectivement une faute de frappe. Cependant, même avec le "where", je n'ai pas pu obtenir que c[4] == "IN" pour retourner la cellule A5. J'ai pu accomplir ce dont j'avais besoin en supprimant toute la clause where, ce qui m'a permis d'obtenir la totalité de la plage spécifiée. Dans le message initial, j'essayais juste de retourner une seule valeur - des pas de bébé :)
Dans le but de marquer une réponse, comment puis-je retourner une seule cellule de la plage ? Peut-être que le == "IN"
est une sorte de faute de frappe, et non une construction réelle de LinqToExcel ?
Merci pour votre aide !