| |
VB.NET - Ein- und UmsteigerVB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: peterjura | Datum: 28.01.18 18:00 |
| Erstmals hallo zusammen, bin recht neu hier
Mit dem Thema VB in Verbindung von .Net befasse ich mich erst seit kurzem. Wobei ich das System super finde, leider fehlt es halt noch etwas um die Materie richtig ausnutzen zu können…
Nun komme ich eben zu meiner Frage, wo ich an meine Grenzen derzeit Stoße…..
Würde gerne eine vorhandene Excel xlsx Datei in ein Gridview laden, und das dann in Html anzeigen lassen. Das habe ich schon mit der Hilfe des Internetes ganz gut geschafft
Kann da auch zwischen den einzelnen Arbeitsblättern in der xlsx Datei wählen, also alles super!
Mein Problem ist das in der genannten Datei oft gleiche Werte (Duplikate) sind und diese dann logischer Weisse auch in HTML angezeigt werde.
Mein Wunsch wäre es eben das beim Darstellen des Gridview die Dopplungen nicht angezeigt werden würden. Das kann anhand der ersten Spalte passieren da, da immer eine IP Adresse drinsteht.
Hier mal mein Code zum einlesen ins Gridview:
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 Wäre super wenn mir da jemand helfen könnte oder nen Ansatz geben kann wie ich da weiter machen könnte. Bestenfalls mit Beispiel
Beste Grüße
Peter | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: peterjura | Datum: 29.01.18 17:53 |
| Hab es schon probieren können, die Idee war gut! Aber leider steckt der Teufel ja im Detail, liegt auch an meiner nicht ganz richtigen Formulierung.....
Problem ist das ich in der jeweiligen Zeile auch ein Zeitstempel habe, somit ist die Zeile nicht immer gleich.
Die Überprüfung muss sich immer auch die erste Spalte der jeweiligen Zeile beziehen. Nur anhand dieses Kriterium darf er reagieren.
Ist in diesem Fall eine IP Adresse.
Die Excel Datei lässt sich nicht beereinigen, da diese automtisch geeneriert wird.
Mein ziel wäre es eben das der Eintrag nur einmal im Frontend angezeigt wird.... Die Zeile nur einmal im Griedview pro IP Adresse anzeigen... | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: effeff | Datum: 30.01.18 08:29 |
| Ja, eben... Du machst das SELECT auf die erste Spalte und benutzt DISTINCT dabei...
EALA FREYA FRESENA | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: peterjura | Datum: 30.01.18 20:09 |
| Dim SQLString As String = "SELECT DISTINCT * FROM [10 - Events$]"
habe ich jetzt verwendet, wie gesagt... nicht ganz oder ich checke es einfach nicht..
..... Schande über mein Haupt...
Filtert halt nicht ganz weil durch den Zeitstempel in der Zeile welche immer ja veschieden ist keine exakte Gleichheit der ganzen Zeile sich ergibt.
..... Wie kann ich Select Distinct nur auf die erste Zeile jeder Spalte anwenden? | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: Manfred X | Datum: 30.01.18 23:50 |
| Hallo!
Zunächst wäre zu klären, wie aus den Einträgen
zu jeweils einer Adresse selektiert werden soll:
- immer der Satz mit dem jüngsten oder dem ältesten Eintrag gemäß Zeitstempel
- zufällig irgendein Datensatz, der Zeitstempel spielt keine Rolle
- immer der erste oder immer der letzte Datensatz gemäß der Satzreihung in der Tabelle
Soll die Spalte, die den Zeitstempel enthält, gelesen werden? | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: peterjura | Datum: 31.01.18 17:19 |
| Hallo MafnredX, vielen Dank für deine Antwort.
Ganz kurz, es ist ganz egal! Also Ergo so wie es am einfachsten zu programmieren wäre.
Jetzt die Erklärung. Die Zeile mit der Ip Adresse in der ersten Spalte, hat mitunter ja den Zeitstempel und noch paar andere Spalten. Wie ERornummer, ERror Text, Systemname.
Das ganze Problem ist das die Datei selbst generiert wird, es werden Logs ausgewertet, leider stehet halt der Fehler manchmal 100 mal da, eben nur mit einem anderen Zeitstempel. Wichtig für mich ist nur das der Fehler einmal dasteht, da man ja schon reagieren muss.
Die Excel Datei wird eingelesen und mittels ASP.NET dann ins HTML generiert, wo verschieden Benutzer darauf Zugriff erhalten sollen.
Wäre echt super wenn mir da jemand etwas unter die Arme helfen könnte, weil derzeit hängt es nur daran....
Macht halt wenig sinn, zwecks der Übersichtlichkeit ein und denn gleichen Error 100 mal im Frontend anzuzeigen....
..... Lüft dann unter VB aspx, also VB.NET
Beitrag wurde zuletzt am 31.01.18 um 17:20:28 editiert. | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: Manfred X | Datum: 31.01.18 20:21 |
| Kannst Du eine "Select Distinct"-Abfrage durchführen
und dabei nur die Spalten-Bezeichner angeben, bei denen die
Datensätze jeweils eindeutigen Inhalt aufweisen, also
die Spalte mit dem Zeitstempel weglassen?
Allerdings:
[I]"Die Zeile mit der Ip Adresse in der ersten Spalte, hat [u]mitunter ja
den Zeitstempel und noch paar andere Spalten. Wie ERornummer, ERror Text,
Systemname."[/I]
Bedeutet das, die Sätze besitzen keinen einheitlichen Spalten-Aufbau?
Oder sind manchmal einige der Datensatz-Felder "leer"? | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: peterjura | Datum: 31.01.18 20:40 |
| .. würde ja am besten nen Screenshot posten, geht ja leide nicht....
"Kannst Du eine "Select Distinct"-Abfrage durchführen
und dabei nur die Spalten-Bezeichner angeben", wie würde denn der Befehl dafür aussehen?
Dim SQLString As String = "SELECT DISTINCT * FROM [6 - Events$A1]" ?? Klappt nicht ganz...
Problem das sich der Zeitstempel in der Mitte befindet, und ich im Vorfeld nie weis wie lang, also wie weit nach unten die Tabelle geht.
Bedeutet das, die Sätze besitzen keinen einheitlichen Spalten-Aufbau?
Oder sind manchmal einige der Datensatz-Felder "leer"? --> Aufbau ist immer der gleich wie folgt:
Network Address | Controller Name | System Name | Serial Number | Time | SeqNo | Type | Category | Code | Title
und darunter eben die Eiträge, wo es geht die Dopplungen zu vermeiden.... Kann nur anhand der ersten Spalte passieren...
... XXXX | ist dann eine zelle | |
Re: VB.NET Excle Datei in Gridview einlesen OHNE Duplikate | | | Autor: Manfred X | Datum: 31.01.18 21:47 |
| Hier eine triviale Methode.
Lies den gesamten Tabelleninhalt in eine Datatable.
Wie das funktioniert (Fill-Methode) siehst Du hier:
http://www.vbarchiv.net/forum/read.php?f=24&t=15236&i=15256
Die geladenen Sätze werden jetzt Distinct gefiltert (übertragen).
Im Beispiel von der Datatable "dtOrg" in Datatable "dtDistinct".
Public Class frmSelectRows
Dim dtOrg As New DataTable
Dim dtDistinct As DataTable
Dim bsDistinct As New BindingSource
Dim dgv As New DataGridView With {.Parent = Me}
Private Sub frmSelectRows_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
'Testdaten (statt der Angaben aus Excel)
With dtOrg.Columns
.Add("Address", GetType(String))
.Add("Whatever", GetType(String))
.Add("TimeStamp", GetType(Date))
End With
Dim rndm As New Random(12345)
Dim adr() As String = {"AAA", "BBB", "CCC", "DDD", "EEE"}
For i As Integer = 0 To 100
dtOrg.Rows.Add(adr(rndm.Next(adr.Length)), _
"y<xcxycvxcvxc", Now.AddMinutes(rndm.Next(0, 5)))
Next i
'Überttragung der Datensätze
dtDistinct = dtOrg.Clone()
bsDistinct.DataSource = dtDistinct
For i As Integer = 0 To dtOrg.Rows.Count - 1
bsDistinct.Filter = _
dtDistinct.Columns(0).ColumnName & _
"='" & dtOrg.Rows(i).Item(0).ToString & "'"
If bsDistinct.Count = 0 Then
'Spalteninhalt in Column Address noch nicht vorhanden ....
dtDistinct.Rows.Add(dtOrg.Rows(i).ItemArray)
End If
Next i
bsDistinct.Filter = ""
'Sätze anzeigen
dgv.DataSource = bsDistinct
End Sub
End Class | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|