Vb.net 为什么我的CSV编写器会跳过一些行?运动模拟

Vb.net 为什么我的CSV编写器会跳过一些行?运动模拟,vb.net,csv,gridview,Vb.net,Csv,Gridview,我不知道为什么我的CSV作者跳过了一些行。我今天尝试导出一个gridview,并通过Concisdence看到了它。网格有250行。它写1-60,然后继续写140-250。excel表中是否缺少61-139 对于代码:首先,我创建一个包含所有列的列表,因为writer方法也应该能够只写特定的列,但这是另一个按钮。 然后将网格和列表提供给csv编写器 Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button

我不知道为什么我的CSV作者跳过了一些行。我今天尝试导出一个gridview,并通过Concisdence看到了它。网格有250行。它写1-60,然后继续写140-250。excel表中是否缺少61-139

对于代码:首先,我创建一个包含所有列的列表,因为writer方法也应该能够只写特定的列,但这是另一个按钮。 然后将网格和列表提供给csv编写器

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim list As List(Of Integer) = New List(Of Integer)


        For Each column As DataGridViewColumn In datagridview2.Columns
            list.Add(column.Index)
        Next

    Module3.csvwriter(list, datagridview2)

    MsgBox("exportieren beendet")
End Sub
csv编写器为每个数据行创建csv正文字符串。 对于每行,如果columnindex在列表中,则将每个columnvalue追加到body。 最好的是,我已经看到了该方法是如何构建第61行的,但在csv中却没有:/

Public Sub csvwriter(list As List(Of Integer), grid As DataGridView)

    Dim body As String = ""
    Dim myWriter As New StreamWriter(Importverzeichnis.savecsv, True, System.Text.Encoding.Default)

    Dim i As Integer

    For i = 0 To grid.Rows.Count - 1

        For ix = 0 To grid.Columns.Count - 1

            If list.Contains(ix) Then

                If grid.Rows(i).Cells(ix).Value IsNot Nothing Then
                    body = body + grid.Rows(i).Cells(ix).Value.ToString + ";"

                Else
                    body = body + ";"
                End If
            End If
        Next
        myWriter.WriteLine(body)
        body = ""
    Next


    myWriter.Close()




End Sub
有人有主意吗?我是否忽略了什么?我找到了答案。 1.csv文件已完成。每一排都在那里

  • 问题是,在我的datarows中有一个“转义定界符的符号;sign”

  • 为了解决这个问题,我现在将文件保存为.txt文件, 因为这样,用户每次打开文件时都会被询问,哪一个是分隔符,哪一个是转义符号。这样,用户就必须输入正确的设置,而.csv文件使用标准配置