Hallo VB'ler Experten,
zunächst einmal, ich bin jetzt nicht der Profi in diesem Fach. Ausser ein wenig VB Anwendungen in Excel, kenne ich mich nicht ganz so aus.
Ich möchte folgendens Realisieren und benötige hier ein wenig Hilfe. In den letzten Tagen habe ich schon mehrfach verschiedene Seiten ergoogelt, bin nur zu keinem Ergebnis gekommen.
Es wird eine CSV Datei in eine DataGridView eingelesen. Aus diesen Werten wird später ein Liniendiagramm erstellt, was mehr oder weniger auch funktioniert.
Nun hänge ich an einigen Details fest. Es wird von Begin die Anzahl der Spalten in der DataGridView festgelegt. In den zu imortiernden CSV Dateien sind die Anzahl der Spalten jedoch nicht immer gleich.
Nun dachte ich, man kann die Anzahl der Spalten in der CSV Datei ermitteln und später bei der Erstellung der DataGridView einfließen lassen.
Mein Ansatz ist, es werden die Trennzeichen "," in der CSV gezählt, welche die Anzahl der Spalten ergibt.
Es wird jedoch ein falscher Wert ausgegeben und ich weiß nicht warum. Was ist also in diesem Quellcode falsch?
Bitte nicht über den Quellcode lachen hier ist bestimmt einiges nicht richtig, diesen habe ich aus verschiedenen Codeschnippsel zusammengesucht und angepasst, aber er funktioniert zumindest
Danke
zunächst einmal, ich bin jetzt nicht der Profi in diesem Fach. Ausser ein wenig VB Anwendungen in Excel, kenne ich mich nicht ganz so aus.
Ich möchte folgendens Realisieren und benötige hier ein wenig Hilfe. In den letzten Tagen habe ich schon mehrfach verschiedene Seiten ergoogelt, bin nur zu keinem Ergebnis gekommen.
Es wird eine CSV Datei in eine DataGridView eingelesen. Aus diesen Werten wird später ein Liniendiagramm erstellt, was mehr oder weniger auch funktioniert.
Nun hänge ich an einigen Details fest. Es wird von Begin die Anzahl der Spalten in der DataGridView festgelegt. In den zu imortiernden CSV Dateien sind die Anzahl der Spalten jedoch nicht immer gleich.
Nun dachte ich, man kann die Anzahl der Spalten in der CSV Datei ermitteln und später bei der Erstellung der DataGridView einfließen lassen.
Mein Ansatz ist, es werden die Trennzeichen "," in der CSV gezählt, welche die Anzahl der Spalten ergibt.
Es wird jedoch ein falscher Wert ausgegeben und ich weiß nicht warum. Was ist also in diesem Quellcode falsch?
Bitte nicht über den Quellcode lachen hier ist bestimmt einiges nicht richtig, diesen habe ich aus verschiedenen Codeschnippsel zusammengesucht und angepasst, aber er funktioniert zumindest
Danke
VB.NET-Quellcode
- Public Class Form1
- Const ANZAHLSPALTEN As Integer = 30
- Const TRENNZEICHEN As Char = ","
- Private Sub ÖffnenToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÖffnenToolStripButton.Click
- With OpenFileDialog1
- .Filter = "CSV Dateien (*.csv)|*.csv" 'Es werden nur CSV Dateien angezeigt
- .FilterIndex = 1
- .FileName = "" 'Der Filname bleibt leer
- .InitialDirectory = "" 'Kann eine Pfad Angabge enthalten
- .Title = "Datei auswählen ..." 'Zeigt den Titel des Öffnenfensters
- .ShowDialog() 'Der Dialog wird gestartr
- End With
- End Sub
- Private Sub OpenFileDialog1_FileOk(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
- Dim Felder() As String
- Dim Zeile As String
- Dim DATEINAME As String = OpenFileDialog1.FileName
- Dim dt = New DataTable()
- Dim sr = My.Computer.FileSystem.OpenTextFileReader(DATEINAME, System.Text.Encoding.Default)
- '--------------------------------------------------------
- ' hier ist der Ausschnitt welcher zunächst über eine MsgBox
- 'die Anzahl der Trennzeichen ausgeben sollte
- Dim pfad As String = (sr.Read - 1)
- Dim dateinamesplit() As String = pfad.Split(TRENNZEICHEN)
- Dim index As Integer = UBound(dateinamesplit)
- Dim dateinamenew As Integer = dateinamesplit(index)
- MsgBox(dateinamenew)
- '--------------------------------------------------------
- For i As Integer = 1 To ANZAHLSPALTEN
- dt.Columns.Add("Spalte " & i) ' Spaltenüberrschriften erzeugen
- Next
- Do While (sr.Peek > -1) ' Dateiende abfragen
- Zeile = sr.ReadLine ' Eine Datenzeile lesen
- Felder = Zeile.Split(TRENNZEICHEN) ' Splitten in Felder
- Dim dr As DataRow = dt.NewRow ' Leere Datenzeile erstellen
- dr.ItemArray = Felder ' In DataRow speichern
- dt.Rows.Add(dr) ' Felder zur Datatable hinzufügen
- Loop
- DataGridView1.DataSource = dt ' DataTable in DataGridView zeigen
- InitializeDataGridView()
- End Sub