if (strFileName == "") return false;
            //得到Excel连接字符串
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
                             "Data Source=" + strFileName + ";" +
                             "Extended Properties=Excel 8.0;";            //将Excel数据读入DataSet
            OleDbDataAdapter ExcelDa = new OleDbDataAdapter("SELECT * FROM [sheet1$]", strConn);
            DataSet ExcelDs = new DataSet();
            ExcelDa.Fill(ExcelDs, "studinfo");            //
            string strSQL = string.Format("SELECT * FROM studinfo");
            OleDbConnection conn = new OleDbConnection(GetConStr());
            OleDbDataAdapter da = new OleDbDataAdapter(strSQL, conn);
            OleDbCommandBuilder MyCB = new OleDbCommandBuilder(da);
            DataSet ds = new DataSet();
            conn.Open();
            try
            {
                ds = ExcelDs.Copy();
                //MessageBox.Show(ds.Tables[0].Rows[0].Table.Columns[1].ToString());
                //Without   the   OleDbCommandBuilder   this   line   would   fail  
                da.Update(ds.Tables[0]);
                conn.Close();
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                conn.Close();
            }
           我想这样处理
           Excel->DataSet->Access,
           这样ds里面的数据写不入Access里面,请高手指点一下!

解决方案 »

  1.   

    手工INSERT?
    效率太慢了吧,
      

  2.   

    检查Excel中的数据结构和Access中的数据结构是否相同
      

  3.   

    乱来, 有任何文档有说明过可以这么使用适配器么? 你的ds.Tables[0]与da根本没有任何关联!!! 
    老老实实手工写个循环来Insert或者使用其他处理手段(比如import而不是insert)
      

  4.   

    是啊,你的da只有SelectCommand,而InsertCommand,UpdateCommand都没有定义,怎么导入?
      

  5.   

    这段代码:
    是读出Excel表,整个表导入到DataSet。如果想要把数据更新到数据库,需要每一行每一列的把字符读出来。
    1.引用Application对象 
    2.使用工作薄 ,Workbook对象代表Excel应用程序中当前打开的一个工作簿,包含在Workbooks集合中。读第一个工作表。
    3.使用工作表 。Sheets集合表示工作簿中所有的工作表。可以通过Sheets集合来访问、激活、增加、更名和删除工作表。一个Worksheet对象代表一个工作表。
    4.使用单元范围 Range对象代表工作表的某一单元格、某一行、某一列、某一选定区域或者某一三维区域。然后插入到数据库我是用insert方法。
      

  6.   

    手工insert很慢么?写好了命令,放入循环中一执行就好了。