Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在两行之间将CSV文件数据导入DataGridView_Sql_Vb.net_Csv_Datagridview - Fatal编程技术网

Sql 在两行之间将CSV文件数据导入DataGridView

Sql 在两行之间将CSV文件数据导入DataGridView,sql,vb.net,csv,datagridview,Sql,Vb.net,Csv,Datagridview,我完全不明白这一点。事情是这样的。我有一个包含大量数据的CSV文件,但是我只需要其中的一部分数据。网上有很多关于按范围(例如:F15:L20)选择它的东西,但我不知道这些数据,因为它会根据条目的数量而变化 下面是一个示例CSV文件 NAME RYAN DATE 3/25/2014 ID SECID FID LAST NAME FIRST NAME NOTES 1 3

我完全不明白这一点。事情是这样的。我有一个包含大量数据的CSV文件,但是我只需要其中的一部分数据。网上有很多关于按范围(例如:F15:L20)选择它的东西,但我不知道这些数据,因为它会根据条目的数量而变化

下面是一个示例CSV文件

NAME      RYAN
DATE      3/25/2014

ID        SECID         FID      LAST NAME      FIRST NAME          NOTES
1         3             1003     Doe            John                -
2         4             1004     Doe            John                -
3         5             1005     Doe            John                -
4         2             1002     Doe            John                -
5         1             1001     Doe            John                -
FINAL
ID        SECID         FID      LAST NAME      FIRST NAME          NOTES
**1         4             1004     Doe            John**              -
**2         5             1005     Doe            John**              -
**3         2             1002     Doe            John**              -
**4         3             1003     Doe            John**              -
**5         1             1001     Doe            John**              -
OTHER RECORDS
我需要导入的是
FINAL
中所有内容的
ID、SECID、FID、姓和名(范围由星号选择)。由于我们不知道有多少条记录(在本例中为5条),因此我需要能够通过值
FINAL
其他记录
进行搜索,然后我可以跳过
FINAL
之后的一行,然后通过列E(名字)选择所有内容,直到找到值
其他记录
值为止

理论上,我可以在CSV文件中搜索
FINAL
,找到它的位置,然后做所有的事情。在这种情况下是这样的<代码>最终
的位置是A10。如果我们将行值减去5,我们将知道有多少条记录。现在我们添加跳过第11行,然后选择A12到E17中的所有内容,我们将获得值

如果这让人很困惑,我很抱歉。我就是找不到一个好办法来解释它。我相信只要搜索文件中的
FINAL
,找到它的位置,然后计算出有多少条记录,然后使用一个范围来收集数据,我就可以做到这一点。然而,我发布了所有其他信息,以防有人用更简单的方式做事。因此,我的问题是如何在CSV文件中搜索一个值,然后获取该值的单元格位置,或者是否有更好的方法—如何执行?f

Imports System.IO
Imports System.IO

Public Class Form1
  'Add a button and a datagridview to the form'
  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim strFilename As String = "C:\Junk\Junk.CSV"
    Dim blnFinal As Boolean = False 'wait until we find a line that says "FINAL"'
    Dim dtb As New DataTable
    dtb.Columns.Add(New DataColumn("ID", GetType(String)))
    dtb.Columns.Add(New DataColumn("SECID", GetType(String)))
    dtb.Columns.Add(New DataColumn("FID", GetType(String)))
    dtb.Columns.Add(New DataColumn("LAST NAME", GetType(String)))
    dtb.Columns.Add(New DataColumn("FIRST NAME", GetType(String)))
    Using sr As New StreamReader(strFilename, False)
      Do Until sr.EndOfStream
        Dim strLine As String = sr.ReadLine() 'read a line'
        If Not blnFinal Then
          If strLine.ToUpper = "FINAL" Then
            blnFinal = True
          End If
        Else
          If strLine.ToUpper = "OTHER RECORDS" Then
            Exit Do 'finished'
          End If
          Dim strFields() As String = strLine.Split(","c)
          If strFields(0) <> "ID" Then 'ignore header row'
            dtb.Rows.Add(strFields(0), strFields(1), strFields(2), strFields(3), strFields(4))
          End If
        End If
      Loop
    End Using
    DataGridView1.DataSource = dtb
  End Sub
End Class
公开课表格1 '将按钮和datagridview添加到表单' 私有子按钮1\u单击(发送者作为对象,e作为事件参数)处理按钮1。单击 Dim strFilename为String=“C:\Junk\Junk.CSV” Dim blnFinal As Boolean=False'等待,直到找到一行显示“FINAL”' Dim dtb作为新数据表 添加(新数据列(“ID”,GetType(字符串))) Add(新数据列(“SECID”,GetType(String))) 添加(新数据列(“FID”,GetType(字符串))) 添加(新数据列(“姓氏”,GetType(字符串))) 添加(新数据列(“名字”,GetType(字符串))) 使用sr作为新的StreamReader(strFilename,False) 直到老先生去世 Dim strLine As String=sr.ReadLine()'读取一行' 如果不是blnFinal,那么 如果strLine.ToUpper=“FINAL”,则 blnFinal=True 如果结束 其他的 如果strLine.ToUpper=“其他记录”,则 退出“完成” 如果结束 Dim strFields()作为字符串=strLine.Split(“,”c) 如果标准字段(0)“ID”,则“忽略标题行” 添加(标准域(0)、标准域(1)、标准域(2)、标准域(3)、标准域(4)) 如果结束 如果结束 环 终端使用 DataGridView1.DataSource=dtb 端接头 末级