日期:2014-05-19  浏览次数:20510 次

急....急...CSV文件导入问题
Dim   file_info   As   New   System.IO.FileInfo(strfilepath)
                'Dim   strConn   As   String   =   "Driver={Microsoft   Text   Driver   (*.txt;   *.csv)};Dbq= "   +   file_info.Directory.ToString()   +   ";Extensions=asc,csv,tab,txt;HDR=No "

                Dim   strConn   As   String   =   "Provider=Microsoft.Jet.OLEDB.4.0;Data   Source= "
                strConn   +=   file_info.Directory.ToString()
                strConn   +=   ";Extended   Properties= " "text;HDR=No;FMT=Delimited " " "
                Dim   objConn   As   New   OleDb.OleDbConnection(strConn)
                Dim   dscsv   As   New   DataSet

                Try
                        'objConn.Open()

                        Dim   strSql   As   String   =   "select   *   from   "   +   file_info.Name.ToString()
                        Dim   odbcCSVDataAdapter   As   New   OleDb.OleDbDataAdapter(strSql,   objConn)
                        odbcCSVDataAdapter.Fill(dscsv)
                        odbcCSVDataAdapter.Dispose()
                        objConn.Close()

                Catch   ex   As   Exception

                End   Try

--------------------------------------
为什么导入0034899000000
在datagridview中显示的却是3.4899E+10
还有就是当导入070321的话也会变成70321
我是想把这所有的当成字符串导入到dataset中,然后再在datagridview中显示.
请大家帮帮忙..

------解决方案--------------------
这样的数据格式需要自己作一下处理,默认的0034899000000会表示成科学技术法,070321会吧前边的0去掉,可以在导出CSV的时候给前面加单引号变成 '0034899000000,或者变成= "0034899000000 ",当然,在导入的时候还要对这样对格式作相应的处理
------解决方案--------------------
数据库中的这个字段设置为字符型
在程序中上传文件名的时候 如果是数字的话 在文件名上 加上 “” 应该可以吧?
------解决方案--------------------
文本文件的导入我一般都是用streamreader直接读文件,然后用string.split( '\t ')处理一下,再insert进数据库,根本不存在你那样的问题,而且这样代码也不多,速度也很快。我总觉得用到database相关的类开销会比较大。
------解决方案--------------------
将Schema.ini放在当前文件夹下,
http://support.microsoft.com/kb/149090/zh-cn