| |

VB.NET - Ein- und UmsteigerCSV-Editor | |  | Autor: Manfred X | Datum: 27.03.10 22:07 |
| Hallo!
Du kannst mit den oben erwähnten Methoden
relativ einfach eine Datatable erweitern, diese dann an
ein Datagridview binden und beliebig den Dateiinhalt
editieren, Zeilen und Spalten anfügen usw.
Du kannst die Spalten im Datagridview auch sortieren
lassen und doppelte Einträge einfach markieren und löschen.
Hier ein einfaches - GROB getestetes Demo-Beispiel für
eine derartige Erweiterung der Datatable.
Dem Projekt eine Klasse hinzufügen und den Code eintragen:
Option Strict On : Option Explicit On : Option Infer Off
Public Class cDataTableCSV
Inherits System.Data.DataTable
Public Function LoadFile(ByVal filename As String, _
ByVal textencoder As System.Text.Encoding, _
Optional ByVal FeldTrennzeichen As Char = ";"c, _
Optional ByVal ZeilenTrennzeichen As String = _
Microsoft.VisualBasic.vbNewLine) As Boolean
Me.Rows.Clear() : Me.Columns.Clear()
Try
'Zeilen lesen
Dim lines() As String = _
System.IO.File.ReadAllLines(filename, textencoder)
'Maximale Feldzahl pro Zeile
Dim fields() As String, maxfields As Integer = 0
For i As Integer = 0 To lines.GetUpperBound(0)
If lines(i) <> String.Empty Then
fields = lines(i).Split(FeldTrennzeichen)
maxfields = System.Math.Max(maxfields, fields.Length)
End If
Next i
If maxfields < 1 Then Return False
'Spalten für Felder erstellen
For i As Integer = 0 To maxfields - 1
Me.Columns.Add("SP_" + CStr(i), GetType(String))
'Einige Standardeigenschaften der Spalten
Me.Columns(i).AllowDBNull = True
Me.Columns(i).DefaultValue = String.Empty
Me.Columns(i).ReadOnly = False
Next i
'Datatable: Zeilen füllen
Dim r As System.Data.DataRow
For i As Integer = 0 To lines.GetUpperBound(0)
If lines(i) <> String.Empty Then
fields = lines(i).Split(FeldTrennzeichen)
System.Array.Resize(fields, maxfields)
r = Me.NewRow
For k As Integer = 0 To maxfields - 1
If String.IsNullOrEmpty(fields(k)) Then
r(k) = String.Empty
Else
r(k) = fields(k).Trim
End If
Next k 'Felderschleife
Me.Rows.Add(r)
End If
Next i
Return Me.Rows.Count > 0
Catch ex As System.Exception
Return False
End Try
End Function
Public Function SaveFile _
(ByVal Filename As String, ByVal Feldtrennzeichen As Char) As Boolean
If Me.Rows.Count < 1 Then Return False
Try
Dim lines(Me.Rows.Count - 1) As String
Dim fields(Me.Columns.Count - 1) As String
For i As Integer = 0 To Me.Rows.Count - 1
'Felder aus der Table zusammenstellen
For k As Integer = 0 To Me.Columns.Count - 1
fields(k) = CType(Me.Rows(i).Item(k), String)
Next k
'Felder zusammenfügen
lines(i) = System.String.Join(Feldtrennzeichen, fields)
'Leere Spalten am Zeilenende entfernen
While lines(i).EndsWith(Feldtrennzeichen)
lines(i) = lines(i).Substring(0, lines(i).Length - 1)
End While
Next i
'Datei füllen
System.IO.File.WriteAllLines(Filename, lines)
Return True
Catch ex As System.Exception
Return False
End Try
End Function
Public Sub AddColumn()
Dim k As Integer = Me.Columns.Count
Dim cn As String = "SP_" & CStr(k)
Me.Columns.Add(cn, GetType(String))
For i As Integer = 0 To Me.Rows.Count - 1
Me.Rows(i).Item(k) = String.Empty
Next i
End Sub
End Class Verwendung:
Dim dx as cDataTableCSV 'am besten formular-global
dx = New cDataTableCSV
If Not dx.LoadFile(Dateipfad, System.Text.Encoding.Default) Then Stop
DataGridView1.DataSource = dx
Um eine weitere Spalte anzufügen:
dx.AddColumn
Weitere Zeilen können einfach im DataGrid angefügt werden.
Alle Änderungen werden sofort in die Datatable eingetragen.
Um die (editierten) Daten in der Table zu speichern ...
If Not dx.SaveFile(Datei-Pfad) Then Stop
Beitrag wurde zuletzt am 27.03.10 um 22:13:09 editiert. |  |
 | 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 |
  |
|
sevZIP40 Pro DLL 
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|