我有一个csv文件,其中前3行包含不需要的数据。第四行仅在第一列中需要数据。还有4行包含不需要的数据。第9行到最后的行需要数据。从第9行开始,共有11列数据,需要第1至6列,而不需要第7至11列。 我有使用DataGridView进行临时存储的代码。它提供了上述的解析,但是我不需要查看数据,我需要创建一个解析后的新CSV文件。 可能有一种方法使用数据表来临时存储,而不是使用DataGridView,但是使用LINQ可能有一种更简单的方法。我没有LINQ的经验,并且我对数据表的经验非常有限。我对DataGridView感到很满意,因为我已经广泛使用它,但是正如我之前写的那样,我不需要显示结果。
我在https://www.codeproject.com/questions/634373/how-to-delete-the-rows-in-csv-file中尝试了该代码。但这不适合我的情况。下面的代码使用DataGridView进行临时存储,但是我敢肯定有更好的方法。
Using MyReader As New TextFieldParser(racerFile)
Dim currentRow As String()
MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
MyReader.Delimiters = New String() {","}
currentRow = MyReader.ReadFields()
currentRow = MyReader.ReadFields()
currentRow = MyReader.ReadFields()
boatClass = MyReader.ReadFields()(0)
currentRow = MyReader.ReadFields()
currentRow = MyReader.ReadFields()
currentRow = MyReader.ReadFields()
currentRow = MyReader.ReadFields()
While Not MyReader.EndOfData
Try
Dgvs.Rows.Add()
currentRow = MyReader.ReadFields()
Dgvs(0, rd).Value = boatClass
Dgvs(1, rd).Value = currentRow(1)
Dgvs(2, rd).Value = currentRow(2)
Dgvs(3, rd).Value = currentRow(3)
Dgvs(4, rd).Value = currentRow(4)
Dgvs(5, rd).Value = currentRow(5)
rd += 1
Catch ex As Exception
End Try
End While
End Using
Using WriteFile As New StreamWriter(myFile)
For x As Integer = 0 To Dgvs.Rows.Count - 1
For y As Integer = 0 To Dgvs.Columns.Count - 1
WriteFile.Write(Dgvs.Rows(x).Cells(y).Value)
If y <> Dgvs.Columns.Count - 1 Then
WriteFile.Write(", ")
End If
Next
WriteFile.WriteLine()
Next
End Using
我需要一个CSV文件进行输出。
答案 0 :(得分:0)
您可以将值存储在List(Of String)
中,而不是将值存储在DatGridView中,其中列表中的每个字符串都是输出csv文件的一行。
Dim output As New List(Of String)
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
Dim line As String
line = boatClass
line = line & "," & currentRow(1).ToString
line = line & "," & currentRow(2).ToString
line = line & "," & currentRow(3).ToString
line = line & "," & currentRow(4).ToString
line = line & "," & currentRow(5).ToString
output.Add(line)
Catch ex As Exception
End Try
End While
然后按如下所示编写output
行。
Using WriteFile As New StreamWriter(myFile)
For Each line As String In output
WriteFile.Write(line)
Next
End Using