WinForm将Excel中的表导入orcale
一个Excel中有多个sheet,每一个sheet存放的是一个表中的数据。
Excel中存放的表有可能是一个或多个表空间的表。
sheet的命名规则是:表名|表空间名。
------解决方案--------------------
 private string OpenFileDialogByExcel() 
         { 
             //打开一个文件选择框 
             ofd = new OpenFileDialog(); 
             //打开文本框的标题 
             ofd.Title =  "Excel文件 "; 
             ofd.FileName =  " "; 
             //指定打开文本框的路径为我的电脑 
             ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);//为了获取特定的系统文件夹,可以使用System.Environment类的静态方法GetFolderPath()。该方法接受一个Environment.SpecialFolder枚举,其中可以定义要返回路径的哪个系统目录 
             //打开文件的格式 
             ofd.Filter =  "Excel文件(*.xls)|*.xls ";   
             ofd.ValidateNames = true;     //文件有效性验证ValidateNames,验证用户输入是否是一个有效的Windows文件名 
             ofd.CheckFileExists = true;  //验证路径有效性 
             ofd.CheckPathExists = true; //验证文件有效性     
             strName = string.Empty; 
             if (ofd.ShowDialog() == DialogResult.OK) 
             { 
                 strName = ofd.FileName; //获取文件路径 
             }   
             if (strName ==  " ") 
             { 
                 MessageBox.Show( "没有选择Excel文件!无法进行数据导入 "); 
                 return null; 
             }   
             return strName;   
         } 
         public void EcxelToAccess(string filePath) 
         { 
             bool IsSuccess = false; //判断添加是否成功 
             //根据路径打开一个Excel文件并将数据填充到DataSet中 
             string strConn =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + filePath +  ";Extended Properties = 'Excel 8.0;HDR=NO;IMEX=1 ' ";//导入时包含Excel中的第一行数据,并且将数字和字符混合的单元格视为文本进行导入 
             string strExcel =  " "; 
             strExcel =  "select  * from   [sheet1$] "; 
             OleDbDataReader readerExcel = ExecuterReader(strConn, CommandType.Text, strExcel, null); 
            // dataGridView1.Rows.Clear(); 
             if (readerExcel.HasRows == true) 
             { 
                 List <string>  list = new List <string> (); 
                 if (readerExcel.Read()) 
                 { 
                     while (readerExcel.Read()) 
                     { 
                         list.Clear();   //循环读取之前就清空list集合的值                           
                         UserInfo _userInfo = new UserInfo(); 
                         _userInfo.Id = int.Parse(readerExcel[0].ToString()); 
                         _userInfo.Expertname = readerExcel[1].ToString(); 
                         _userInfo.Contact = readerExcel[2].ToString(); 
                         _userInfo._职称 = readerExcel[3].ToString(); 
                         _userInfo._工作单位 = readerExcel[4].ToString(); 
                         _userInfo._专业 = readerExcel[5].ToString(); 
                         IsSuccess = IputToAccess(_userInfo);    //添加到数据库中去   
                         string id = _userInfo.Id.ToString();    //获取用户编号 
                         string name = _userInfo.Expertname;       //获取用户名 
                         string 联系方式 = _userInfo.Contact;         //获取用户密码 
                         string __职称 = _userInfo._职称; 
                         string __工作单位 = _userInfo._工作单位; 
                         string __专业 = _userInfo._专业; 
                         list.AddRange(new string[] 
                             { 
                                 id,name,联系方式,__职称,__工作单位,__专业 
                             }); 
                         int index = dataGridView2.Rows.Add(); 
                         //为datagirdvi