J'utilise le bibliothèque LinqtoExcel . Travailler très bien jusqu'à présent, sauf que je dois commencer em> la requête à une ligne spécifique. En effet, la feuille de calcul Excel du client utilise des images et des "en-tête" en haut du fichier Excel avant que les données ne démarrent réellement. P>
Les données elles-mêmes seront simples à lire et sont assez génériques, je dois juste savoir comment dire au Je suis conscient de la pêche au travail Utilisation du dernier v. de LinqtoExcel avec C # P> ExcelqueryFactory code> pour commencer à une ligne spécifique. p>
Société> ("B3", "G10") CODE> option, mais je ne veux pas spécifier une ligne de fin, n'importe où Démarrer < / em> lire le fichier. P>
5 Réponses :
Avez-vous essayé FeatureTerrange
Oui, malheureusement, cela me donne une erreur "EnDrange Argument 'G' est format invalide pour le nom de la cellule"
Inunatly, à ce moment-là et à l'itération du cadre LinqtoExcel, il ne semble pas y avoir de moyen de le faire.
Pour contourner cela, nous obligeons que le client ait les données à télécharger. feuille "dans le document Excel. La ligne d'en-tête à la première rangée et les données sous elle. S'ils veulent des "métadonnées", ils devront y inclure dans une autre feuille. Vous trouverez ci-dessous un exemple de Documentation LinqtoExcel sur la façon d'interroger une feuille spécifique. p>
Je viens d'essayer ce code et il semblait travailler juste bien:
var book = new LinqToExcel.ExcelQueryFactory(@"E:\Temporary\Book1.xlsx");
var query =
from row in book.WorksheetRange("A4", "B16384")
select new
{
Name = row["Name"].Cast<string>(),
Age = row["Age"].Cast<int>(),
};
Je suppose que vous avez déjà résolu cela, mais peut-être pour d'autres personnes - on dirait que vous pouvez utiliser pas aussi simple que spécifiant une plage ("B3", ...), mais aussi la voie.
J'espère que cela aide au moins quelqu'un;) p> p>
où vous affectez la variable code> longueur code>?
Eh bien, il serait généralement allrowows.count code> ou allrowows.count () code> ou allrowows.length code> (ne sais pas maintenant, désolé) , si vous voulez lire toutes les lignes. Ou comme substitution à spécifier (non existant) plage ("B3", "G10") code> Vous devez le calculer. longueur code> a été utilisé juste à des fins de démontrer. À l'époque, il n'y avait pas de solution simple Afaik ... Bon point, publié précédemment.
J'avais essayé cela, fonctionne bien pour mon scénario.
//get the sheets info
var faceWrksheet = excel.Worksheet(facemechSheetName);
// get the total rows count.
int _faceMechRows = faceWrksheet.Count();
// append with End Range.
var faceMechResult = excel.WorksheetRange<ExcelFaceMech>("A5", "AS" + _faceMechRows.ToString(), SheetName).
Where(i => i.WorkOrder != null).Select(x => x).ToList();
Je viens de trouver cela très utile mais je voulais souligner que vous devez ajouter la valeur de ligne de départ au nombre d'enregistrements ou que vous manquez ce nombre de lignes à la fin, il devrait donc être int _facemechrows = facewrksheet.count () + 5;
@Davidmolyneux Je ne suis pas sûr de cela était de 2 ans, mais dans mon cas, il s'agissait de sauter des enregistrements d'en-tête.
Salut vous êtes correct, j'ai examiné cela un peu plus, si vous avez des données sur vos lignes de pointe, alors cela fonctionne bien. Si comme moi, ils ne sont que des lignes vierges, ils ne sont pas chargés, et le nombre total de lignes est court par la quantité de lignes vides. Donc, si vous avez 5 lignes vierges et 15 lignes de données (20 rangées totales), le nombre total de lignes est de 15 de sorte que votre gamme irait de la rangée 5 à la rangée 15 manquant les 5 dernières lignes ajoutées dans les lignes sautées vous ramèneront à la Total correct.