【发布时间】:2014-10-17 11:59:54
【问题描述】:
所以我有一个包含额外逗号的 csv 文件。我知道在特定专栏之后我将不再需要任何东西。所以基本上我不需要第 12 列之后的任何信息。我对 csv 到达我时的外观没有发言权,所以我不能在那里更改它。我想知道是否有办法只读取前 12 列而忽略 csv 文件的其余部分。
这就是代码现在的样子。
感谢您的帮助
Private Sub GetData(ByVal Path As String, ByRef DG As DataGridView, Optional ByVal NoHeader As Boolean = False)
Dim Fields(100) As String
Dim Start As Integer = 1
If NoHeader Then Start = 0
If Not File.Exists(Path) Then
Return
End If
Dim Lines() As String = File.ReadAllLines(Path)
Lines(0) = Lines(0).Replace(Chr(34), "")
Fields = Lines(0).Split(",")
If NoHeader Then
For I = 1 To Fields.Count - 1
Fields(I) = Str(I)
Next
End If
dt = New DataTable()
For Each Header As String In Fields
dt.Columns.Add(New DataColumn(Header.Trim()))
Dim desiredSize As Integer = 11
While dt.Columns.Count > desiredSize
dt.Columns.RemoveAt(desiredSize)
End While
Next
For I = Start To Lines.Count - 1
Lines(I) = Lines(I).Replace(Chr(34), "")
Fields = Lines(I).Split(",")
Dim dr As DataRow = dt.Rows.Add()
For j = 0 To Fields.Count - 1
dr(j) = Fields(j).Trim()
Next
Next
DG.DataSource = dt
End Sub
【问题讨论】:
-
使用标准的 ReadLines 方法,您不能在行的某个点停止阅读。如果它们具有此选项,您可以尝试搜索一些特定于解析文件的外部库(想到的一个是FileHelpers,但这可能是矫枉过正。所以,除了创建/删除模式时创建您在此处已经有“需要调试”工作方法的列
-
与其重新发明轮子,不如看看TextFieldParser Class
标签: vb.net csv export-to-csv text-parsing