Home > Back-end >  how to read a specific csv line vb.net
how to read a specific csv line vb.net

Time:08-18

ask permission, I created a bot to input data to the web using vb.net and selenium. Retrieve data from csv . How to retrieve data from csv as needed, for example, there are 100 rows, only 30-50 rows are taken, for example. The loop code should not be looped at all.

 Dim textFieldParser As TextFieldParser = New TextFieldParser(TextBox1.Text) With
                {
                    .TextFieldType = FieldType.Delimited,
                    .Delimiters = New String() {","}
                }

        drv = New ChromeDriver(options)
        While Not textFieldParser.EndOfData
            Try
                Dim strArrays As String() = textFieldParser.ReadFields()
                Dim name As String = strArrays(0)
                Dim alamat As String = strArrays(1)
                Dim notlp As String = strArrays(2)
                drv.Navigate().GoToUrl("URL")
                Dim Nm = drv.FindElement(By.XPath("/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input"))
                Nm.SendKeys(name)
                Threading.Thread.Sleep(3000)
            Catch ex As Exception
            MsgBox("Line " & ex.Message & "is not valid and will be skipped.")

                End Try
        End While
    

Thank you

CodePudding user response:

Here's an example of using TextFieldParser to read one specific line and a specific range of lines. Note that I am using zero-based indexes for the lines. You can adjust as required if you want to use 1-based line numbers.

Public Function GetLine(filePath As String, index As Integer) As String()
    Using parser As New TextFieldParser(filePath) With {.Delimiters = {","}}
        Dim linesDiscarded = 0

        Do Until linesDiscarded = index
            parser.ReadLine()
            linesDiscarded  = 1
        Loop

        Return parser.ReadFields()
    End Using
End Function

Public Function GetLines(filePath As String, startIndex As Integer, count As Integer) As List(Of String())
    Using parser As New TextFieldParser(filePath) With {.Delimiters = {","}}
        Dim linesDiscarded = 0

        Do Until linesDiscarded = startIndex
            parser.ReadLine()
            linesDiscarded  = 1
        Loop

        Dim lines As New List(Of String())

        Do Until lines.Count = count
            lines.Add(parser.ReadFields())
        Loop

        Return lines
    End Using
End Function

Simple loops to skip and to take lines.

  • Related