Vb.net 读取excel CSV文件时跳过第一行
我在几种语言中找到了如何做到这一点,但在.net(特别是vb.net)中没有找到。我正在使用OLeDbCommand读取CSV和Excel文件。对于Excel,我可以跳过第一行,然后通过指定单元格范围选择第二行。但在CSV的情况下,我不知道如何做。 当前代码如下所示:Vb.net 读取excel CSV文件时跳过第一行,vb.net,excel,csv,Vb.net,Excel,Csv,我在几种语言中找到了如何做到这一点,但在.net(特别是vb.net)中没有找到。我正在使用OLeDbCommand读取CSV和Excel文件。对于Excel,我可以跳过第一行,然后通过指定单元格范围选择第二行。但在CSV的情况下,我不知道如何做。 当前代码如下所示: Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [" + Path.GetFileName(FileName) + "]", cn) 这里我们给出的是文件,不
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [" + Path.GetFileName(FileName) + "]", cn)
这里我们给出的是文件,不是表格。所以我有点卡住了。根据我的经验,阅读这样的文本文件是非常有限制的。它只允许您读取整个文件,因为您不能指定表名。您最好阅读每一行并生成表行,然后将它们添加到表中。如果第一行是标题,您可以使用它来生成列,否则将对列进行硬编码 下面是一个简单的小方法,它使用.csv文件中的数据填充datatable,您应该能够使用:
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
我同意。但我的文件是一个“MicrosoftExcel逗号分隔值文件”,它使用Excel打开,其中包含包含所有其他Excel功能的工作表。但是如果有一张纸的名字,我就看不懂,所以我必须看整个文件。有没有办法将CSV转换为Excel?“使用Excel打开,其中包含工作表”-CSV文件没有工作表,因为它只是一个纯文本文件。Excel将打开它并从中创建一个Excel文件(即,它在Excel中显示为单个工作表),但CSV文件仅包含内容。有关此行为的一些讨论,请参阅。