我发现如何用多种语言执行此操作,但不能在.net(特别是vb.net)中执行此操作。我正在使用OLeDbCommand读取CSV和Excel文件。在Excel的情况下,我可以通过指定一系列单元格跳过第一行并选择第二行。但是在CSV的情况下,我不知道该怎么做。 当前代码如下:
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [" + Path.GetFileName(FileName) + "]", cn)
这里我们给出的是文件,而不是表格。所以我有点卡住了。
答案 0 :(得分:1)
根据我的经验,阅读这样的文本文件是非常严格的。它只允许您读取整个文件,因为您无法指定表名。您最好阅读每一行并制作表格行并将其添加到表格中。如果第一行是标题,您可以使用它来创建列,否则硬编码列。
这是一个简单的小方法,用.csv文件中的数据填充数据表,您应该可以使用它:
Private Sub GetData(ByRef dt As DataTable, FilePath As String, Optional ByVal Header As Boolean = True)
Dim Fields() As String
Dim Start As Integer = CInt(Header) * -1
If Not File.Exists(FilePath) Then
Return
End If
dt.Clear()
Dim Lines() As String = File.ReadAllLines(FilePath)
If CBool(Start) AndAlso dt.Columns.Count = 0 Then
Lines(0) = Lines(0).Replace(Chr(34), "")
For Each h As String In Lines(0).Split(",")
dt.Columns.Add(h)
Next
End If
For I = Start To Lines.Count - 1
Fields = Lines(I).Split(",")
dt.Rows.Add(Fields)
Next
End Sub