Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
' Definition von Pfad
pfad = "~/App_Data/2.xlsx"
Dim DBConnection = New OleDbConnection(
"Provider=Microsoft.ACE.OLEDB.12.0;" &
"Data Source=" & Server.MapPath(pfad) & ";" &
"Extended Properties=""Excel 8.0;HDR=Yes""")
DBConnection.Open()
Dim SQLString As String = "SELECT * FROM [10 - Events$]"
Dim DBCommand = New OleDbCommand(SQLString, DBConnection)
Dim DBReader As IDataReader = DBCommand.ExecuteReader()
GridView1.DataSource = DBReader
GridView1.DataBind()
DBReader.Close()
DBConnection.Close()
End Sub
|
SELECT * FROM ...
SELECT DISTINCT * FROM ...
|
|
Da der Exceltreiber praktisch die gesamte SQL-Syntax auch für andere Treiber bereitstellt, sollte auch so etwas möglich sein:
SELECT Spalte 1,.. Spalte n FROM <Arbeitsblatt> GROUP BY Spalte 1 ... HAVING <Bedingung> Damit kann nach Daten gruppiert und nur unterschiedliche Gruppenbegriffe ausgewählt werden - ich habe es allerdings nicht explizit erprobt. – edvservice 29.01.2018
|
|
if (reader.HasRows)
{
while (reader.Read())
{
// Hier ihre Daten abfragen - Beispiel Ganzzahl und Zeichenkette
Console.WriteLine("{0}\t{1}", reader.GetInt32(0),
reader.GetString(1));
// Hier Collection(klasse) aufbauen
}
}
else
{
Console.WriteLine("No rows found.");
}
reader.Close();
|
|
Wenn es mehrere Zeilen mit der selben IP-Adresse in Spalte 1 gibt, stellt sich aber die Frage: Welche Zeile soll gewählt werden? Sie benötigen dann für die Auswahl ein zweites Kriterium im SQL oder Sie verarbeiten die Daten wie oben angedeutet sequentiell, was möglicherweise einfacher ist.
– edvservice 30.01.2018
|
|
SELECT <IP-Spalte>, MIN(<Spalte2>, ... MIN(<Spalte n>) FROM <Blatt>
GROUP BY <IP-Spalte>
|
Sie haben in Ihrem Beispiel bereits eine Verbindung zum Excel aufgebaut. Müssen Sie nicht einfach Ihr Statement anpassen?
Falls das der Treiber nicht mitmacht, könnte man den ODBC-Treiber für Excel probieren. Zumindest in VB-Script funktioniert das wunderbar und sollte auch unter ASP.NET gehen. Schneller dürfte übrigens dann der Weg über den DataReader sein und eine sequentielle Bearbeitung, dann hier nicht so viele Schichten konfiguriert und durchlaufen werden müssen. Die Logik steckt dann in der Schleife: Identbegriff merken und auf Wechsel reagieren und eine eigene Collection aufbauen. – edvservice 01.02.2018
|
Welcher von dennen Datensätzen erhalten bleibt ist eigenltich egal, da sich die Zeilen in dem Excel Sheet (mehrfach-) wiederholen, der inhalt aber ja der gleiche ist. Wegen der Übersicht sollen diese dann eben nur einmal angezeigt werden.....
Wie gesagt probiere ich dann aus, evtl. war es ja das schon...