读取和搜索CSV文件以加载回多个文本框(帮助/困惑)

时间:2016-05-09 00:36:29

标签: visual-studio csv

我不知道为什么我这么长时间以来一直在努力奋斗,但是我最近在离开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文件的顶行并将其放入单独的文本框中。很好,但我怎么读其他线?具体来说,搜索名称,这将是每行的第一项,如果正确,则将该行加载到每个文本框中。

我猜这个代码是一个带有读取每一行的数组的循环。同时,查找名称直到它到达它并使用上面的代码加载到文本框中。

1 个答案:

答案 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