In meinem Projekt hatte ich eine Anforderung zum Lesen Excel-Sheet-Daten und validieren Sie die gleichen. Dann speichern Sie es in der Datenbank. Es funktioniert gut, in diesem Excel-Vorlage row 1
ist Header und Daten werden von row 2
starten.Starten Sie das Lesen von Daten aus einer bestimmten Reihe von Excel mit Linq in C#
zB: -
Name Age Arabic Name Category
Jack 30 بيب A
var mem = from memRec in excelFile.Worksheet("Addition Form")select memRec;
Dann kann ich die Details erhalten mit memRec["Age"],memRec["Name"] etc.
Dies funktioniert gut.
Nun hat der Client eine andere Vorlage, in der die ersten 3-4 Zeilen mit ihren Logos und allen zusammengeführt werden. Der Header wird auf row 4
und Daten werden von row 5
starten.
zB:
row1
row2
row3
row4 Name Age Arabic Name Category
row5 Jack 30 بسيب A
ich unten Code versucht, diese
var mem = from memRec in excelFile.Worksheet("Addition Form")select memRec;
zu lesen ist es nicht lesen und Fehler geben, weil die Überschrift aus Zeile 4 nur gestartet wird.
Ich kenne den Datenbereich auch nicht, weil es darauf ankommt, dass der Benutzer Daten ausfüllt.
So kann ich den Worksheet-Bereich nicht angeben.
Gibt es eine Möglichkeit, die Startzeile zum Lesen der Excel über Linq anzugeben. Auch sobald es fertig ist, können wir die Zeile als
memRec["Age"],memRec["Name"] etc.?
Edited
I unten Code verwendet angeben
mem = from memRec in excelFile.Worksheet("Addition Form").Skip(2) select memRec;
aber als ich versuchte memRec["Age"]
zu nennen es geben Fehler no such column and columns available are Logo1,namecomp.
sagen. .etc .. das ist der Inhalt der ersten Zeile der Excel-Tabelle
mein Excel-Blatt ist wie folgt jetzt
row1 Logo1 namecomp place situation
row2 Name Age ArabicName Category
row3 John 30 يبي A
Ich möchte nicht row1 als meine Spaltenüberschriften. Die Spaltenüberschriften befinden sich in Zeile 2 und die Daten beginnen in Zeile3.
Jetzt, wenn ich versuche Memrec zu lesen [ „Namen“] es Fehler geben sagen, dass keinen solchen Spaltenkopf. Verfügbare Spaltenüberschriften sind Logo1, namecomp etc ..
Bitte helfen Sie mir, dieses Problem zu lösen ..
Nicht genau über die Implementierungsdetails, aber ich könnte Sie die ersten 4 Ergebnisse überspringen und die Spaltennamen selbst setzen. – ameer
@ame Wie setze ich die Spaltennamen selbst? Wenn ich das erste 3 Ergebnis überspringe, ist die vierte Zeile der Spaltenname..so kann ich das nicht benutzen? – Sachu
Linq scheint alle Spalten gleich zu sein. Wenn Sie keine Lösung dafür finden, haben Sie keine Angst davor, diesen Code zu verlassen und die grundlegende ** for-Schleife ** zum Durchlaufen Ihrer Daten zu verwenden. – jp2code