当前位置: > 数据库 > SQL Server 2008 >

如何把Excel数据导入到SQL2008数据库的实例方法

时间:2015-02-22 21:30来源:linux.it.net.cn 作者:IT
最近想练习一下批量插入数据,所以从网上找了一下资料,做了一个怎么把Excel文件数据导入到数据库。

 


private void AddManyData_Click(object sender, RoutedEventArgs e) 
       { 
           OpenFileDialog openFileDialog = new OpenFileDialog(); 
           openFileDialog.Filter = "Excel文件|*.xls"; 

           if ((bool)openFileDialog.ShowDialog())   
           {   
                FileInfo fileInfo = new FileInfo(openFileDialog.FileName);   
                string filePath = fileInfo.FullName;   
                string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties=Excel 8.0"; 

                using (OleDbConnection oleDbConn = new OleDbConnection(connExcel)) 
                { 
                    oleDbConn.Open(); 

                    //获取excel表   
                    DataTable dt = oleDbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
                    //获取Excel表的表名  
                    string tableName = dt.Rows[0][2].ToString().Trim(); 
                    //去掉空格 
                    tableName = "[" + tableName.Replace("'", "") + "]"; 

                    //利用SQL语句从Excel文件里获取数据   
                     string query = @"SELECT 学号,姓名,公益劳动,电子工艺实习,操作系统 ,计算机组成,数值分析,网络设备与集成,动态网站开发实验周,动态网站开发,均分,排名 FROM ";                  + tableName; 
                     DataSet dataSet = new DataSet(); 

                     using (OleDbCommand oleDbcomm = oleDbConn.CreateCommand()) 
                     { 
                         oleDbcomm.CommandText = query; 
                         OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleDbcomm); 
                         oleAdapter.Fill(dataSet); 
                     } 
                     string connStr = "Data Source=HESHUHUA-PC;Initial Catalog=RSMSystem;Integrated Security=True"; 
                     //利用SqlBulkCopy批量插入数据 
                    using (SqlBulkCopy sqlbc = new SqlBulkCopy(connStr)) 
                    { 
                        sqlbc.DestinationTableName = "T_StuScore"; 
                        // sqlbc.ColumnMappings.Add("学号", "StuNum"),第一个参数对应数据库中的列名, 
                        //第二个参数对应数据库中相应表的列名 
                        sqlbc.ColumnMappings.Add("学号", "StuNum"); 
                        sqlbc.ColumnMappings.Add("姓名", "StuName"); 
                        sqlbc.ColumnMappings.Add("公益劳动", "Activity"); 
                        sqlbc.ColumnMappings.Add("电子工艺实习", "ElecAct"); 
                        sqlbc.ColumnMappings.Add("操作系统", "OprationSystem"); 
                        sqlbc.ColumnMappings.Add("计算机组成", "ComputerMaded"); 
                        sqlbc.ColumnMappings.Add("数值分析", "DataAnalyze"); 
                        sqlbc.ColumnMappings.Add("网络设备与集成", "NetWork"); 
                        sqlbc.ColumnMappings.Add("动态网站开发实验周", "WebWeek"); 
                        sqlbc.ColumnMappings.Add("动态网站开发", "WebMake"); 
                        sqlbc.ColumnMappings.Add("均分", "AvScore"); 
                        sqlbc.ColumnMappings.Add("排名", "StuPaiMing"); 
                        sqlbc.WriteToServer(dataSet.Tables[0]); 
                        MessageBox.Show("数据导入成功!"); 

                    } 
                }   

           }   

       } 

 

 





(责任编辑:IT)
------分隔线----------------------------