我不知道为什么我这么长时间以来一直在努力奋斗,但是我最近在离开Visual Basic 6.0多年后回到了visual basic,我正在重新学习这个应用程序的需要。
我已经订购了一个订单,可以写入csv文件没问题,我稍后会在excel中打开来阅读。一切看起来都很棒。但现在我需要一种方法来搜索名称并将与之关联的csv行加载回文本框(包括选中的复选框),以便对其进行编辑,然后将其重新写回到同一行上的csv文件中。变化。有什么帮助吗?
我一直在阅读很多关于如何加载文本和csv文件的内容,但是这些数组令我感到困惑,我相信这些数据用于将文本分隔为“,”并放入单独的文本框中。我不知道从哪里开始。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim LineOfText As String
Dim intArray As Integer
Dim aryCommaSplit() As String
Dim FileData As StreamReader = File.OpenText(FILE_NAME)
LineOfText = FileData.ReadLine
aryCommaSplit = LineOfText.Split(",")
'Outputs first line of .csv file (First, Second, Third) into three textboxes
For intArray = 0 To UBound(aryCommaSplit)
TextBox1.Text = aryCommaSplit(0)
TextBox2.Text = aryCommaSplit(1)
TextBox3.Text = aryCommaSplit(2)
Next intArray
End Sub
编辑:感谢您的SPLIT功能。我试验过它。因此,使用此代码,我可以回读.csv文件的顶行并将其放入单独的文本框中。很好,但我怎么读其他线?具体来说,搜索名称,这将是每行的第一项,如果正确,则将该行加载到每个文本框中。
我猜这个代码是一个带有读取每一行的数组的循环。同时,查找名称直到它到达它并使用上面的代码加载到文本框中。
答案 0 :(得分:0)
好的,所以我没有在.csv文件中找到输入textbox1的单词。然后它告诉我行号并在textbox1,textbox2和textbox3中输入一行。但是,它始终是第一线。如何告诉它使用我之前找到的行号中的行(i)?我不能把它放在For intArray中。我会创建另一个吗?
编辑:没关系。我想到了!除了,我怎样才能重写回到它所在的同一行?Dim Lookfor As String = TextBox1.Text
Dim aryCommaSplit() As String
Dim aryLineRead() As String
'aryCommaSplit = LineOfText.Split(",")
'aryLineRead = aryCommaSplit
Dim intArray As Integer
Dim currentline As Integer
Dim i As Integer
Dim lines = System.IO.File.ReadAllLines(FILE_NAME)
For i = 0 To lines.Length - 1
currentline = i
aryCommaSplit = lines(i).Split(",")
aryLineRead = aryCommaSplit
'Searches for word entered in TextBox1 within the open .csv file
If lines(i).Contains(Lookfor) Then
For intArray = 0 To UBound(aryLineRead)
TextBox1.Text = aryCommaSplit(0)
TextBox2.Text = aryCommaSplit(1)
TextBox3.Text = aryCommaSplit(2)
Next
'Writes the line number to Label1
Label1.Text = currentline
'Writes the full line to TextBox5
TextBox5.Text = lines(i)
End If
Next