小弟正在做EXCEL导入数据库
可在数据转换的时候卡住了
问题是这样的
XLS文件里有4行数据
第一行是字符 第二行是数字 第三行也是字符 第四行也是字符
在数据库里对应的是第一个varchar第二个numeric 第三个datetime第四varchar
我现在一导入就说数据类型不正确
那为大哥能贴一个EXCEL导入MSSQL数据库的实例给我啊!~
小弟谢谢啦
急啊!~
问题解决马上给分!insert openrowset('SQLOLEDB','sql服务器名';'用户名';'密码',数据库名.dbo.表名)
select*from openrowset('MicroSoft.Jet.OleDB.4.0','Excel5.0;HDR=yes;Database=f:\aa.xls','select*from[sheet1$]')
这里的SQLOLEDB是什么意思啊?数据库连接语句吗
望达人指教啊

解决方案 »

  1.   

    http://blog.csdn.net/jinjazz/archive/2007/12/11/1930455.aspx
      

  2.   

    这个我会做
    但是不能去判断数据类型啊!~
    我把DATASET转换成了一条条的insert语句就是数据类型不知道怎么转
    EXCEL里的数字取到DATESET里就变成字符串了
      

  3.   

    写在读取的地方 这个就要你写出所有的字段
     convert(datetime,要转换的字段名)
      

  4.   


    insert [ODBC;Driver=SQL Server;Server=SQL服务器名;Uid=用户名;Pwd=密码;database=数据库名].接受数据导入的表名(字段列表) 
    SELECT 导入的字段列表 
    FROM [Excel 5.0;HDR=NO;DATABASE=c:\test.xls].[sheet1$] 
      

  5.   

    insert [ODBC;Driver=SQL Server;Server=SQL服务器名
    这里的ODBC是常量吗/
    如果我是SqlClient
    是不是应该写
    insert [SqlClient;Driver=SQL Server;Server=SQL服务器名
      

  6.   

    谁能帮我看下这段代码不报错
    数据库也没更新.
     public static string rianstring(string fileName)
        {
            string tableName = string.Empty;
            if (File.Exists(fileName))
            {
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + fileName);
                {
                    conn.Open();
                    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    tableName = dt.Rows[0][2].ToString().Trim();
                }
            }
            return tableName;
        } public DataSet UpdateByDataSet(DataSet ds, string str_tableName, string str_conn)
        {
            SqlConnection conn = new SqlConnection(str_conn);
            SqlCommand mycmd = new SqlCommand("select * from " + str_tableName, conn);
            SqlDataAdapter myda = new SqlDataAdapter(mycmd);
            SqlCommandBuilder myder = new SqlCommandBuilder(myda);
            myda.InsertCommand = myder.GetInsertCommand();
            //myda.UpdateCommand = myder.GetUpdateCommand();
            //try
            //{
                lock (this)
                {
                    conn.Open();
                    myda.Update(ds, str_tableName);
                    conn.Close();
                }
                return ds;
            //}
            //catch (Exception)
            //{
            //    conn.Close();
            //    throw;
            //}
        }//取得XLS文件第一张表名
        public static string rianstring(string fileName)
        {
            string tableName = string.Empty;
            if (File.Exists(fileName))
            {
                OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0\";Data Source=" + fileName);
                {
                    conn.Open();
                    DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    tableName = dt.Rows[0][2].ToString().Trim();
                }
            }
            return tableName;
        }调用
    UpdateByDataSet(RainSet(FileUpload1.PostedFile.FileName), "a", System.Configuration.ConfigurationManager.ConnectionStrings["xxxxConnectionString"].ToString());
      

  7.   

    http://www.cnblogs.com/frostcity/archive/2008/03/07/1095484.html
    楼主请参考~谢谢~~~吃饭先了
      

  8.   

    貌似最近遇到过 EXCEL2007 有个功能 在选中某列的时候可以设置本列格式
    楼主的4列全部设置为"常规" 就可以了 BCP入库的时候不会出错 EXCEL2003的编辑器没用过 不了解 LZ试试
      

  9.   

    你用SQL SERVER中的事件探察器来看看有没有执行sql语句,
    再就是看看你的ds中数据个数是不是0,要是0的话就是没有读取EXCEL的数据,要是读到了你就用事件探察器看看是不是执行了SQL,最后一句拉出去(到查询分析器中)跑一下看看
      

  10.   

    ds里是有数据的我在执行前绑定到DATALIST里去看了下
    SQL SERVER事件探察器怎么看呀?