从CSV文件直接读取并生成DATASET,然后显示在前台的DataGrid中,但是发现DataGrid的列标题被第一行内容复盖掉了。正常情况下如果一个DataSet没有列标题的话,会自动赋上列标题column1,comlumn2,......如何把列标题自动赋上呢。我的目的是要自动的列标题。
这是所用的读CSV文件的方法:
 Dim strConn As String
        strConn = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="
        strConn = strConn & strFilePath
        strConn = strConn & ";Extensions=asc,csv,tab,txt;"
        Dim objConn As Odbc.OdbcConnection
        objConn = New Odbc.OdbcConnection(strConn)        Dim CSVDataSet = New DataSet
        Try
            Dim strSql As String
            strSql = "select * from " & strFileName
            Dim ODBCCSVDataAdapter As Odbc.OdbcDataAdapter
            ODBCCSVDataAdapter = New Odbc.OdbcDataAdapter(strSql, objConn)
            ODBCCSVDataAdapter.Fill(CSVDataSet)
            Return CSVDataSet
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Exit Function
        End Try
已经开了一个贴子了,没人理,郁闷啊。一百分寻思路

解决方案 »

  1.   

    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended Properties=\"text;HDR=Yes;FMT=Delimited\""     "HDR=Yes;" indicates that the first row contains columnnames, not data
      

  2.   

    一楼,我需要处理的CSV文件是程序生成的,列名也是不固定的。
      

  3.   

    我试一下。我用的ODBC。得到的这个DATASET,用DATAGRID显示出来的,本意是想让DATAGRID自动赋予列标题。谁知第一行把列标题直接复盖掉了。
      

  4.   

    一楼,我需要处理的CSV文件是程序生成的,列名也是不固定的。------------------
    那你可以在生成CSV文件的时候就生成列名
    或者中间转换一下,读成XML然后再生成数据源
    再则你可以在ItemDataBount事件里用
    dg.Column[i].HeaderText处理一下标头
      

  5.   

    用cancerser(新的可以) 的方法
      

  6.   

    刚试了下OLEDB,结果是一样的。楼上的兄弟,我生成的CSV文件没有列名,直接就是内容(说明一下这个是死的不能更改),原来我用文件流去读的时候,一行行一列列加的情况下没有问题,但是这个CSV文件中有些列中有,号,所以我用,号去SPLIT就出了问题。所以我想换种方式,直接读,就是上面几位兄弟的方法,但是列标题又没有了,因为我原来的类都是用自动列标题处理了其它的一些情况,所以如果不能自动显示出来,改大了。55555
      

  7.   

    这是我用OLEDB的处理方法:
     Dim strConn As String
            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
            strConn = strConn & strFilePath
            strConn = strConn & ";Extended Properties=""text;HDR=Yes;FMT=Delimited"""        Dim objConn As OleDb.OleDbConnection
            objConn = New OleDb.OleDbConnection(strConn)        Dim CSVDataSet As DataSet
            CSVDataSet = New DataSet        Try
                Dim strSql As String
                strSql = "select * from " & strFileName
                Dim ODBCCSVDataAdapter As OleDb.OleDbDataAdapter
                ODBCCSVDataAdapter = New OleDb.OleDbDataAdapter(strSql, objConn)
                ODBCCSVDataAdapter.Fill(CSVDataSet)                      Return CSVDataSet
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                Exit Function
            End Try
      

  8.   

    "HDR=Yes;" indicates that the first row contains columnnames, not data如果不包含列头 把HDR=No
      

  9.   

    以前没有用过OLEDB,所以不熟,刚改了一下参数,把HDR=Yes改为HDR=No,结果出现了标题,不知什么原因啊。标题为F1,F2,F3,虽然和COLUMN差点不过算是有。不明白啊。如果是COLUMN最好啊。
      

  10.   

    谢谢新的可以。
    “HDR=Yes;"indicates that the first row contains columnnames, not data
    HDR=YES,表示第一行包含列名,没有数据。
    我理解的就是,如果HDR=YES,有列标题,否则没有。是不是这样呢。如果是,现在怎么反了啊。
      

  11.   

    是说的你的数据源也就是文件的第一行是否为标题
    如果HDR=Yes  系统会把文件的第一行当做标题加到列中,数据从第二行开始
    HDR=No 第一行开始加载,列名自动分配