Lire Excel à l'aide de LINQ
Je veux lire excel 2003( pas de changement provenant de tiers) et le groupe de données dans la Liste ou un Dictionnaire (je n'ai pas laquelle est la bonne)
pour l'exemple ci-dessous (Excel mise en forme )
Les livres des Données [première ligne et la première colonne dans excel]
deuxième rangée( aucun enregistrement)
Code,Nom,IBN [troisième rangée (deuxième colonne, troisième colonne]
Aust [quatrième ligne, première colonne]
UX test1 34 [ cinquième ligne (deuxième colonne, troisième colonne]
......
....
Livres Données
Code Name IBN
Aust
UX test1 34
UZ test2 345
UN test3 5654
NOUS
UX name1 567
TG nam2 123
UM name3 234
Je suis de la lecture des données excel à l'aide de code suivant( à l'aide de Google)
string filename = @"C:\\" + "Book1.xls";
string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + filename + ";" +
"Extended Properties=Excel 8.0;";
OleDbDataAdapter dataAdapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
DataSet myDataSet = new DataSet();
dataAdapter.Fill(myDataSet, "BookInfo");
DataTable dataTable = myDataSet.Tables["BookInfo"];
var rows = from p in dataTable.AsEnumerable()
where p[0].ToString() != null || p[0].ToString() != "" && p.Field<string>("F2") != null
select new
{ countryName= p[0],
bookCode= p.Field<string>("F2"),
bookName= p.Field<string>("F3")
};
Le code ci-dessus n'est pas bon que pour obtenir le “Code” je suis à l'aide de “ F2” et pour le pays dont je suis l'aide de p[0].Que dois-je utiliser pour obtenir le code et le nom de chaque pays.
Aussi c'est de donner les informations que je veux, mais je ne sais pas comment le mettre en liste ou un dictionnaire ou dans la classe afin que je puisse obtenir des données en passant comme paramètre un nom de pays.
En bref il faut tout d'abord mettre toutes les données de la liste ou un dictionnaire et puis vous pouvez appeler la liste ou un dictionnaire d'obtenir un filtre de données par pays.
Grâce
Vous semblent manquer le point ici. Je suis de l'impression il y a quelques principes fondamentaux manquant à partir de vos connaissances, dans ce cas, vous devez essayer de comprendre d'abord juste avant de sauter directement à une solution. Mon hypothèse de départ est que la "F2" et "F3" pièces stand pour "CHAMP 2" & "CHAMP 3'. Ce qui signifie que vous devez remplacer ces valeurs avec les noms de tes champs.
Les réponses de travail? Rien n'est accepté et je préfère ne pas essayer de tout mais plutôt de commencer avec la solution retenue.
OriginalL'auteur NETQuestion | 2009-09-28
Vous devez vous connecter pour publier un commentaire.
Il y a deux choses que vous devez faire:
Tout d'abord, vous devez reformater la feuille de calcul pour avoir les en-têtes de colonne dans la première ligne, comme le tableau ci-dessous montre
Deuxièmement, l'utilisation de la Linq to Excel de la bibliothèque pour récupérer les données. Il prend soin de faire la connexion oledb et la création du sql pour vous. Ci-dessous est un exemple de la façon dont il est facile d'utiliser la bibliothèque
La caisse de la Linq to Excel de la vidéo d'intro pour plus d'informations sur le projet open source.
OriginalL'auteur Paul
Suggestion 1
Caisse CETTE lien......comme AKofC l'indique, la création d'une classe pour la conservation de vos données doit être votre premier port d'escale. Le lien que j'ai posté est un petit exemple de la sorte de l'idée que nous proposons.
Suggestion 2 par exemple...
La chose évidente à faire à partir du code que vous avez posté, il faudrait créer une nouvelle classe pour stocker vos informations sur le livre.
Ensuite il vous suffit de définir les champs de votre document excel que vous souhaitez passer à la nouvelle instance de votre bookinformation classe.
De Nouvelles Informations Sur Le Livre De Classe:
Méthode Pour Récupérer Les Infos:
veuillez utiliser p[0]!=null au lieu de p[0].ToString()!=null parce que si p[0] est null, il ne peut pas appeler la méthode ToString() et déclenche une exception
OriginalL'auteur Goober
De ce que je comprends, je suggère la création d'un BookData classe contenant les propriétés dont vous avez besoin, dans ce cas, Pays, Code, Nom, et IBN.
Puis une fois que vous avez rempli votre jeu de données avec Excel trucs, créer une nouvelle Liste, et faire une boucle par la des datarow dans le jeu de données en ajoutant les valeurs Excel de la Liste.
Ensuite, vous pouvez utiliser Linq sur la Liste comme suit:
Ou quelque chose comme ça. Je n'ai pas de Visual Studio sur moi, et Intellisense m'a gâté, donc oui. >__>
OriginalL'auteur