当前位置:编程学习 > C#/ASP.NET >>

求一个将excel导入到access数据库的代码!!!谢谢了

刚才已经请教到先导入到dataset中,并通过gridview显示出来,现在想写到access里面,请问怎么写代码。
已经读到dataset中的代码是这样的:

protected DataSet DSBind(string filePath)
    {
        String ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + "Extended Properties=Excel 8.0;";
        //Create connection object by using the preceding connection string.    
        OleDbConnection objConn = new OleDbConnection(ConnectionString);
        objConn.Open();
        OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [Sheet1$]", objConn);
        OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();

        objAdapter1.SelectCommand = objCmdSelect;
        DataSet objds = new DataSet();
        objAdapter1.Fill(objds, "ExcelDataSet");
        return objds;
        objConn.Close();
      
    }


  
    

    
    protected void btnInputData_Click(object sender, EventArgs e)
    {
            gvData.DataSource = DSBind(fuFile.PostedFile.FileName);
        gvData.DataBind();


请问怎么导入到数据库?(还有如果excel有几个sheet,请问怎么解决) --------------------编程问答-------------------- access 讀到 dataset里,
軟后oledbDataApdater。update --------------------编程问答-------------------- OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
                                conn.Open();

for (int i = 0; i <= myDataSet.Tables["Excel_Sheet1"].Rows.Count - 1; i++)
                                {
//...
                                                                            string intostr = "insert into " + tabel_name + " ([enrollment_date],[name],[sex],[study_mark],[Private_mark],[class])values('" + myDataSet.Tables["Excel_Sheet1"].Rows[i][0].ToString() + "','"
                                                        + myDataSet.Tables["Excel_Sheet1"].Rows[i][1].ToString() + "','" + myDataSet.Tables["Excel_Sheet1"].Rows[i][2].ToString() + "','"
                                                        + myDataSet.Tables["Excel_Sheet1"].Rows[i][3].ToString() + "','" + myDataSet.Tables["Excel_Sheet1"].Rows[i][4].ToString() + "','" + myDataSet.Tables["Excel_Sheet1"].Rows[i][5].ToString() + "')";//这些东西改为你自己的
                                        OleDbDataAdapter da = new OleDbDataAdapter(intostr, conn);
                                        OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
                                        DataSet ds = new DataSet();
                                        da.Fill(ds, tabel_name);
                                    } --------------------编程问答--------------------
引用 2 楼 gdlpc 的回复:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
  conn.Open();

for (int i = 0; i <= myDataSet.Tables["Excel_Sheet1"].R……

这个代码看的不是很明白,能不能贴个完整的 --------------------编程问答-------------------- 顶一下~~~~~~ --------------------编程问答--------------------
引用 3 楼 hlong001 的回复:
引用 2 楼 gdlpc 的回复:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();

for (int i = 0; i <= myDataSet.Tables[……

这个跟你的那个结合起来用就可以了呀
已经完整了的 --------------------编程问答--------------------
引用 5 楼 mengxj85 的回复:
引用 3 楼 hlong001 的回复:
引用 2 楼 gdlpc 的回复:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\studentinfo.mdb");
conn.Open();

for (int i = 0; ……

请问如何整合啊,那个if代码是不是要放入click事件里,还有myDataSet.Tables["myDataSet.Tables["Excel_Sheet1"]"]里,Excel_Sheet1要用excel的实际表名?

我把它的if语句改成自己的,6个字段名我都建成他那6个:
  for (int i = 0; i <=objds.Tables["Excel_Sheet1"].Rows.Count - 1; i++)
  
        {
//...
      string intostr = "insert into tb_excelData ([enrollment_date],[name],[sex],[study_mark],[Private_mark],[class])values('" + objds.Tables["Excel_Sheet1"].Rows[i][0].ToString() + "','"
  + objds.Tables["Excel_Sheet1"].Rows[i][1].ToString() + "','" + objds.Tables["Excel_Sheet1"].Rows[i][2].ToString() + "','"
  + objds.Tables["Excel_Sheet1"].Rows[i][3].ToString() + "','" + objds.Tables["Excel_Sheet1"].Rows[i][4].ToString() + "','" + objds.Tables["Excel_Sheet1"].Rows[i][5].ToString() + "')";

      OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OleDb.4.0;Data Source=|DataDirectory|\\info.mdb");

        OleDbDataAdapter da = new OleDbDataAdapter(intostr, conn);
  OleDbCommandBuilder cmd = new OleDbCommandBuilder(da);
  DataSet ds = new DataSet();
  da.Fill(ds, "tb_excelData");

请问谁能够贴个完成的代码上来啊,我是初学者,急用这个功能啊,在线等 --------------------编程问答-------------------- private DataTable XlsToDataTable(String strpath)  
  {  
  string strConn;  
  strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strpath + ";" +  
  "Extended Properties=Excel 8.0;";  
  OleDbConnection conn = new OleDbConnection(strConn);  
  OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);  
  DataTable dt = new DataTable();  
  myCommand.Fill(dt);  
  return dt;  
  }  


private void button1_Click(object sender, EventArgs e)  
  {  
  string str="";
  oleDbConnExcel = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=" + Application.StartupPath.Trim() +"\\a.xls");  
  oleDbConnExcel.Open();  
  strGetDataFromExcel = "SELECT * FROM [Sheet1$]";  
  oleDbCmdExcel = new OleDbCommand(strGetDataFromExcel, oleDbConnExcel);  
  oleDbDataReaderExcel = oleDbCmdExcel.ExecuteReader();  
  if (oleDbDataReaderExcel.HasRows == true)  
  {  
  oleDbConnAccess.Open();  
  for (; ; )  
  {  
  if (oleDbDataReaderExcel.Read())  
  {  
  str= "";  
  oleDbCmdAccess = new OleDbCommand(str, oleDbConnAccess);  
  oleDbCmdAccess.ExecuteNonQuery();  
  oleDbCmdAccess.Dispose();  
  }  
  else  
  break;  
  }  
  oleDbConnAccess.Close();  
  }  
  oleDbDataReaderExcel.Close();  
  oleDbCmdExcel.Dispose();  
  oleDbConnExcel.Close();  
  }  
或直接代码excel模板,遍历数据集,导入excel  --------------------编程问答-------------------- 就是循环“导入到dataset”的数据,插入...
--------------------编程问答-------------------- C# Excel 导入到 Access数据库表(转载winForm版) 


        /// <summary>
        /// 获取Excel文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Filter = "Excel文件(*.xls)|*.xls";
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string filePath = dlg.FileName;
                this.textBox1.Text = filePath;
            }
        }

        /// <summary>
        /// 导入Excel文件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            if (textBox1.Text.Length == 0)
            {
                MessageBox.Show("请选择导入数据的Execl文件");
            }
            else
            {
                try
                {
                    OleDbConnectionStringBuilder connectStringBuilder = new OleDbConnectionStringBuilder();
                    connectStringBuilder.DataSource = this.textBox1.Text.Trim();
                    connectStringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
                    connectStringBuilder.Add("Extended Properties", "Excel 8.0");
                    using (OleDbConnection cn = new OleDbConnection(connectStringBuilder.ConnectionString))
                    {
                        DataSet ds = new DataSet();
                        string sql = "Select * from [Sheet1$]";
                        OleDbCommand cmdLiming = new OleDbCommand(sql, cn);
                        cn.Open();
                        using (OleDbDataReader drLiming = cmdLiming.ExecuteReader())
                        {
                            ds.Load(drLiming, LoadOption.OverwriteChanges, new string[] { "Sheet1" });
                            DataTable dt = ds.Tables["Sheet1"];
                            if (dt.Rows.Count > 0)
                            {
                                for (int i = 0; i < dt.Rows.Count; i++)
                                {
                                    //写入数据库数据
                                    string MySql = "insert into ClientInfo values('"+dt.Rows[i]["姓名"].ToString()+"','"+dt.Rows[i]["姓名"].ToString()
                                        +"','0','"+dt.Rows[i]["备注"].ToString()+"','0','"+i.ToString()+"')";
                                    new DataAccess().SQLExecute(MySql);
                                }
                                MessageBox.Show("数据导入成功!");
                            }
                            else
                            {
                                MessageBox.Show("请检查你的Excel中是否存在数据");
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }

 /// <summary>
        /// 数据操作通用类
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public bool SQLExecute(string sql)
        {
            try
            {
                OleDbConnection conn = new OleDbConnection(CONNECT_STRING);
                conn.Open();
                OleDbCommand comm = new  OleDbCommand ();
                comm.Connection = conn;
                comm.CommandText = sql;
                comm.ExecuteNonQuery();
                comm.Connection.Close();
                conn.Close();
                return true;
            }
            catch
            {
                return false;

            }
        }
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,