Ich versuche, eine Anwendung zu erstellen, die eine Zeichenfolge in einer bestimmten Spalte einer Excel-Datei sucht, und wenn die Zeichenfolge gefunden wird, zeigen Sie den entsprechenden Spaltenwert an. Beispiel: Ich suche nach einer Zeichenfolge in einer Excel-Dateispalte "N Wenn die gesuchte Zeichenfolge gefunden wird, dann zeige den "E" -ten Spaltenwert der gleichen Zeile an. Die Sache ist, dass mein Code einen einzelnen Wert mehrfach in mehreren Etiketten der zweiten Form anzeigt.Wie kann ich mehrere Werte in Labels dynamisch anzeigen?
FORM1
Imports Excel = Microsoft.Office.Interop.Excel
Imports Microsoft.Office.Interop.Excel
Imports System.Globalization
Imports System.Runtime.InteropServices
Public Class Form1
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
Dim range As Excel.Range
Dim Obj As Object
Dim pass As String
If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
Dim sr As New System.IO.StreamReader(OpenFileDialog1.FileName)
MessageBox.Show("You have selected" + OpenFileDialog1.FileName)
'sr.Close()
End If
xlApp = New Excel.Application
xlWorkBook = xlApp.Workbooks.Open(OpenFileDialog1.FileName)
xlWorkSheet = xlWorkBook.Worksheets("sheet1")
range = xlWorkSheet.UsedRange
For rCnt = 1 To range.Rows.Count
For cCnt = 14 To range.Columns.Count
If xlWorkSheet.Cells(rCnt, cCnt).value = "3" Or xlWorkSheet.Cells(rCnt, cCnt).value = "4" Or xlWorkSheet.Cells(rCnt, cCnt).value = "5" Or xlWorkSheet.Cells(rCnt, cCnt).value = "6" Or xlWorkSheet.Cells(rCnt, cCnt).value = "7" Or xlWorkSheet.Cells(rCnt, cCnt).value = "8" Or xlWorkSheet.Cells(rCnt, cCnt).value = "9" Or xlWorkSheet.Cells(rCnt, cCnt).value = "10" Then
Obj = CType(range.Cells(rCnt, "E"), Excel.Range)
'MessageBox.Show(Obj.value)
Foo = Obj.value
Form2.Show()
End If
Next
Next
xlWorkBook.Close()
xlApp.Quit()
releaseObject(xlApp)
releaseObject(xlWorkBook)
releaseObject(xlWorkSheet)
End Sub
Private Sub releaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
End Class
FORM2
Imports System.Linq
Imports System.Drawing
Public Class Form2
Private Sub Panel1_Paint(sender As Object, e As PaintEventArgs) Handles Panel1.Paint
Dim label As New Label()
Dim count As Integer = Panel1.Controls.OfType(Of Label)().ToList().Count
label.Location = New Point(10, (25 * count))
'label.Size = New Size(40, 20)
label.Name = "label_" & (count + 1)
label.Text = Foo '& (count + 1)
label.AutoSize = True
Panel1.Controls.Add(label)
Dim button As New Button()
button.Location = New System.Drawing.Point(250, 25 * count)
button.Size = New System.Drawing.Size(60, 20)
button.Name = "Print" & (count + 1)
button.Text = "Print" '& (count + 1)
AddHandler button.Click, AddressOf Button_Click
Panel1.Controls.Add(button)
MessageBox.Show(Foo)
End Sub
Private Sub Button_Click(sender As Object, e As EventArgs)
Dim button As Button = TryCast(sender, Button)
MessageBox.Show(button.Name + " clicked")
End Sub
End Class
Modul
Module Module1
Public Foo As String
End Module
Hallo bro .. kannst du bitte auch mein Beispiel ausarbeiten? Die Sache ist, dass ich mehrere Etiketten mit demselben Text bekomme. Nach ein paar Wiederholungen wird der Text geändert. –