Hallo Leute,
ich komme bei folgendem Problem nicht weiter.
Bei Button.Click Ereignis:
-Programm schreibt den Inhalt der 3 Textboxen in vorhandene Excel Datei (funktioniert)
-Programm gibt gerade den Inhalt der Excel Tabelle in Listview wieder aus (funktioniert auch)
Sobald ich jedoch den 2. Eintrag über Button 2 bestätige, füllt sich das Listview doppelt...
Beispiel auf 1 Spalte reduziert:
Textbox1.text = Hallo --> Button.Click
---> Ausgabe in Listview =
Hallo
Textbox1.text = Welt ---> Button.Click
---> Ausgabe in Listview =
Hallo
Hallo
Hallo
Welt
Ich dachte es wäre logisch, dann zuerst die Listview.Items.Clear() auszuführen und dann erst die Eintragungen zu machen, aber irgendwie klappt das nicht so, wie ich mir das dachte.
Vielleicht ist auch der Ort des Befehls falsch, ich weiß es nicht ...
Anbei mal mein Code:
Ich hoffe ihr versteht was ich da versuche und könnt mir auf die Sprünge helfen.
Viele Grüße
Stefan
ich komme bei folgendem Problem nicht weiter.
Bei Button.Click Ereignis:
-Programm schreibt den Inhalt der 3 Textboxen in vorhandene Excel Datei (funktioniert)
-Programm gibt gerade den Inhalt der Excel Tabelle in Listview wieder aus (funktioniert auch)
Sobald ich jedoch den 2. Eintrag über Button 2 bestätige, füllt sich das Listview doppelt...
Beispiel auf 1 Spalte reduziert:
Textbox1.text = Hallo --> Button.Click
---> Ausgabe in Listview =
Hallo
Textbox1.text = Welt ---> Button.Click
---> Ausgabe in Listview =
Hallo
Hallo
Hallo
Welt
Ich dachte es wäre logisch, dann zuerst die Listview.Items.Clear() auszuführen und dann erst die Eintragungen zu machen, aber irgendwie klappt das nicht so, wie ich mir das dachte.
Vielleicht ist auch der Ort des Befehls falsch, ich weiß es nicht ...
Anbei mal mein Code:
VB.NET-Quellcode
- Imports Microsoft.Office.Interop
- Public Class Form1
- Private MyLine As Integer = 1
- Private Sub cmdButton1_Click(sender As System.Object, e As System.EventArgs) Handles cmdButton1.Click
- ListView1.Items.Clear() 'Dachte, das ich das so lösen könnte...Geht aber nicht
- ' Textboxeinträge in vorhandene Excel Tabelle eintragen
- Dim xlObj As New Excel.Application
- xlObj.Visible = True
- Dim Mappe As Excel.Workbook = xlObj.Workbooks.Open("C:...\Test2.xlsx")
- Dim Tabelle As Excel.Worksheet = Mappe.Sheets("Tabelle1")
- Tabelle.Cells(MyLine, 1).Value = txtBox1.Text
- Tabelle.Cells(MyLine, 2).Value = txtBox2.Text
- Tabelle.Cells(MyLine, 3).Value = txtBox3.Text
- MyLine += 1
- Mappe.Save()
- Mappe.Close()
- xlObj.Quit()
- 'Wenn Wert vorhanden, dann Wert aus Excel auslesen und in Listview eintragen
- If ZelleGefuellt() = True Then
- For Each Xitem In ExcelRowlist
- Dim lvitem As ListViewItem
- lvitem = Me.ListView1.Items.Add(Xitem.C1)
- lvitem.SubItems.AddRange(New String() {Xitem.C2, Xitem.C3})
- Next
- End If
- End Sub
- ' zu generierende Spalten
- Private Structure ExcelRows
- Dim C1 As String
- Dim C2 As String
- Dim C3 As String
- End Structure
- 'Liste, in die die generierten Spalten eingetragen werden
- Private ExcelRowlist As List(Of ExcelRows) = New List(Of ExcelRows)
- Private Function ZelleGefuellt() As Boolean
- Dim Completed As Boolean = False
- 'Öffnen
- Dim MyExcel As New Excel.Application
- MyExcel.Workbooks.Open("C:\...\Test2.xlsx")
- 'Daten aus Excel einlesen
- MyExcel.Sheets("Tabelle1").activate()
- MyExcel.Range("A1").Activate()
- Dim ThisRow As New ExcelRows
- Do
- If MyExcel.ActiveCell.Value > Nothing Or MyExcel.ActiveCell.Text > Nothing Then
- ThisRow.C1 = MyExcel.ActiveCell.Value
- MyExcel.ActiveCell.Offset(0, 1).Activate()
- ThisRow.C2 = MyExcel.ActiveCell.Value
- MyExcel.ActiveCell.Offset(0, 1).Activate()
- ThisRow.C3 = MyExcel.ActiveCell.Value
- ExcelRowlist.Add(ThisRow)
- MyExcel.ActiveCell.Offset(1, -2).Activate()
- Else
- Completed = True
- Exit Do
- End If
- Loop
- 'Schließen
- MyExcel.Workbooks.Close()
- MyExcel = Nothing
- Return Completed
- End Function
- End Class
Ich hoffe ihr versteht was ich da versuche und könnt mir auf die Sprünge helfen.
Viele Grüße
Stefan