我不知道为什么我的CSV编写器会跳过某些行。我试图今天导出一个gridview,并按巧合看到它。网格有250行。它写入1-60然后继续140-250。 excel表中缺少61-139?
代码:首先我创建一个列所有列,因为writer方法也应该只能写特定的列,但这是另一个按钮。 然后将网格和列表提供给csv Writer。
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-Writer为每个数据行创建一个csv-body-String。 对于每一行,如果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
有人有想法吗?我忽视了什么吗?
答案 0 :(得分:0)
我找到了答案。 1. csv文件已完成。每一行都在那里。
问题是或者是,在我的数据行中是一个“逃脱分隔符的标志;签名。
要解决此问题,我现在将文件保存为.txt文件, 因为每次打开文件时都会询问用户,哪一个是分隔符,这是转义符号。这样用户被迫放入正确的设置,而.csv文件使用标准配置.. < / p>