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

C#WinForm中如何实现将Excel2003的数据导入到数据库中

C#WinForm中如何实现将Excel2003的数据导入到数据库中
在网上找个个代码,谢谢大家啊
 //导出数据
        private void daochu_Click(object sender, EventArgs e)
        {
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();
            saveFileDialog1.Filter = "导出Excel (*.xls)|*.xls|Word (*.doc)|*.doc";
            saveFileDialog1.FilterIndex = 1;
            saveFileDialog1.RestoreDirectory = true;//保存对话框是否记忆上次打开的目录
            saveFileDialog1.CreatePrompt = true;
            saveFileDialog1.Title = "导出文件保存路径";
            saveFileDialog1.ShowDialog();
            if (saveFileDialog1.FileName == "")
                return;
            string fileExt = System.IO.Path.GetExtension(saveFileDialog1.FileName);
            if (fileExt != ".xls")//必须是EXCEL文件
                return;
            string filepath = saveFileDialog1.FileName;//文件路径
            DataTable dt = new DataTable();
            dt = CallExcel(filepath);//返回EXCEL文件的数据
            if (InsertSQLServer(dt, saveFileDialog1.FileName.Split('.')[0]))//导入数据库
            { }
        }

        protected DataTable CallExcel(string filepath)
        {
            OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;'");
            con.Open();//这个部分报错,提示外部表不是预期的格式。
            string sql = "select * from [Sheet1$]";//选择第一个数据SHEET
            //OleDbCommand command = new OleDbCommand(sql, con);
            //OleDbDataReader reader = command.ExecuteReader();
            //if (reader.Read())
            //{
            // reader[0].ToString();//直接读出数据
            //}
            OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con);
            DataTable dt = new DataTable();
            adapter.Fill(dt);
            //reader.Close();
            //command.Dispose();
            con.Close();
            con.Dispose();
            return dt;
        }

        protected bool InsertSQLServer(DataTable dt, string dataname)
        {
            string strCon = @"server=.;database=testmyIVR;uid=sa;pwd=123";
            try
            {
                SqlConnection con = new SqlConnection(strCon);//连接数据库
                con.Open();//打开

                //插入数据
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    string strSQL = " Insert into userss values (";
                    for (int k = 0; k < dt.Columns.Count; k++)
                    {
                        strSQL += "'" + dt.Rows[i][k].ToString() + "',";
                    }
                    strSQL = strSQL.Substring(0, strSQL.Length - 1);
                    strSQL += ")";
                    SqlCommand insertCom = new SqlCommand(strSQL, con);
                    insertCom.ExecuteNonQuery();
                }
                return true;
            }
            catch
            {
                return false;
            }
        } --------------------编程问答-------------------- declare @sql varchar(1000)  
set @sql= ' insert into '+@tablename+  
' SELECT * '+  
' FROM OpenDataSource( ' 'Microsoft.Jet.OLEDB.4.0 ' ', ' 'Data Source= '+@filename+';User ID=Admin;Password=;Extended properties=Excel 5.0;HDR=yes;imex=1 ' ')...[ '+@exceltablename+ '] '  
exec(@sql)  
 
 
读取到dataset,sqldataadapter更新
--------------------编程问答-------------------- 连接字符串没看出有什么问题。换个Excel文件试试。。。

http://blog.csdn.net/fangxinggood/archive/2005/06/18/397315.aspx --------------------编程问答-------------------- public  static SqlConnection conn = new SqlConnection();
        public  static SqlCommand comm = new SqlCommand();

public void openConnection()
        {
            if (conn.State == ConnectionState.Closed)
            {
                try
                {
                    conn.ConnectionString = "server=.;database=zyqp;user id = "sa";pwd = "1234";//连接字符串
                    comm.Connection = conn;
                    conn.Open();
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message);
                }
            }
        }//打开连接

        public void closeConnection()
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
            conn.Dispose();
            comm.Dispose();
        }//关闭连接





 public DataView dataView(string sqlStr)
        {
            SqlDataAdapter da = new SqlDataAdapter();
            DataView dv = new DataView();
            DataSet ds = new DataSet();
            try
            {
                openConnection();
                comm.CommandType = CommandType.Text;
                comm.CommandText = sqlStr;
                da.SelectCommand = comm;
                da.Fill(ds);
                dv = ds.Tables[0].DefaultView;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                closeConnection();
            }
            return dv;
        }//视图方法


 private void Form1_Load(object sender, EventArgs e)
        {
            this.dv1.DataSource = dataView("select * from 视图名称"); //
        }//窗口打开时,即显示数据 dv1是datagridview的name,可自定义修改


  private void button1_Click_1(object sender, EventArgs e)
        {
            if (dv2.RowCount > 0)
            {
                //建立Excel对象 
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();// = new Excel.Application();
                excel.Application.Workbooks.Add(true);

                //生成字段名称 
                for (int i = 0; i < dv2.ColumnCount; i++)
                {
                    excel.Cells[1, i + 1] = dv2.Columns[i].HeaderText;
                }
                //填充数据 
                for (int i = 0; i < dv2.RowCount - 1; i++)
                {
                    for (int j = 0; j < dv2.ColumnCount; j++)
                    {
                        if (dv2[j, i].Value == typeof(string))
                        {
                            excel.Cells[i + 2, j + 1] = "" + dv2[i, j].Value.ToString();
                        }
                        else
                        {
                            excel.Cells[i + 2, j + 1] = dv2[j, i].Value.ToString();
                        }
                    }
                }
                excel.Visible = true;
            }
            else
            {
                MessageBox.Show("没有数据可以导出");
            }

        }


注意:添加引用和命名空间 Microsoft.Office.Interop.Excel

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