将excel多个表导入sql

  1. public DataSet GetDataSet(string filePath)  
  2.     {  
  3.         string Connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");  
  4.         OleDbConnection Conn = new OleDbConnection(Connstr);  
  5.         //创建ArrayList对象 存放所有sheetname    
  6.         ArrayList sheetNamelist = new ArrayList();  
  7.         //获取配置Excel中sheet总数(这里是根据项目需求配置的) 如果需要导入Excel表格所有sheet数据则将此代码删除  
  8.         int sheetCount = Convert.ToInt32(ConfigurationManager.AppSettings["sheetCount"].ToString());  
  9.         DataSet dsExcel = new DataSet();  
  10. 10.         try  
  11. 11.         {  
  12. 12.             if (Conn.State == ConnectionState.Closed)  
  13. 13.             {  
  14. 14.                 Conn.Open();  
  15. 15.             }  
  16. 16.             DataTable dtExcelSchema = Conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { nullnullnull, "Table" });  
  17. 17.             string sheetName = string.Empty;  
  18. 18.             if (dtExcelSchema.Rows.Count > sheetCount)  
  19. 19.             {  
  20. 20.                 Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  

21. alert('很抱歉!你上传Excel文件sheet总数过多不能大于10个sheet..!! ')  

22. // --></mce:script>");  

  1. 23.                 return;  
  2. 24.             }  
  3. 25.             else  
  4. 26.             {  
  5. 27.                 for (int j = 0; j < dtExcelSchema.Rows.Count; j++)  
  6. 28.                 {  
  7. 29.                     sheetName = String.Format("Sheet{0}$", j + 1);  
  8. 30.                     sheetNamelist.Add(sheetName);  
  9. 31.                 }  
  10. 32.             }  
  11. 33.   
  12. 34.         }  
  13. 35.         catch (Exception ex)  
  14. 36.         {  
  15. 37.             throw new Exception(ex.Message.ToString(), ex);  
  16. 38.         }  
  17. 39.         finally  
  18. 40.         {  
  19. 41.             Conn.Close();  
  20. 42.         }  
  21. 43.         try  
  22. 44.         {  
  23. 45.             string strSQL = string.Empty;  
  24. 46.             for (int i = 0; i < sheetNamelist.Count; i++)  
  25. 47.             {  
  26. 48.                 strSQL = "select * from [" + sheetNamelist[i].ToString() + "]";  
  27. 49.                 OleDbDataAdapter da = new OleDbDataAdapter(strSQL, Conn);  
  28. 50.                 DataTable dtExcel = new DataTable(sheetNamelist[i].ToString());  
  29. 51.                 da.Fill(dtExcel);  
  30. 52.                 dsExcel.Tables.Add(dtExcel);  
  31. 53.             }  
  32. 54.             return dsExcel;  
  33. 55.         }  
  34. 56.         catch (Exception ex)  
  35. 57.         {  
  36. 58.             throw new Exception(ex.Message.ToString(), ex);  
  37. 59.         }  
  38. 60.     }  
  39. 61.   
  40. 62.    //从Excel 表中取出数据 将取出来的数据插入到数据库中  
  41. 63.     public void InsertData(DataSet ds) {  
  42. 64.          string strSQL=string.Empty;  
  43. 65.          if (ds.Tables[0].Rows.Count > 0)  
  44. 66.          {  
  45. 67.              for (int j = 0; j < ds.Tables.Count; j++)   
  46. 68.              {   
  47. 69.               for(int i=0;i<ds.Tables[j].Rows.Count;i++)  
  48. 70.               {  
  49. 71.                    DataRow dr=ds.Tables[j].Rows[i];  
  50. 72.                   //组名  
  51. 73.                  string groupname = dr["组名"].ToString().Trim();  
  52. 74.                  //联系人  
  53. 75.                  string contactName = dr["联系人"].ToString().Trim();  
  54. 76.                  //手机号码  
  55. 77.                  string mobile = dr["手机号码"].ToString().Trim();  
  56. 78.                  //公司名称  
  57. 79.                  string companyName = dr["公司名称"].ToString().Trim();  
  58. 80.                  //公办号码  
  59. 81.                  string officeNum = dr["办公号码"].ToString().Trim();  
  60. 82.                  //家庭号码  
  61. 83.                  string homeNum = dr["家庭号码"].ToString().Trim();  
  62. 84.                  //邮箱  
  63. 85.                  string Email = dr["邮 箱"].ToString().Trim();  
  64. 86.                  //联系地址  
  65. 87.                  string address = dr["联系地址"].ToString().Trim();  
  66. 88.                  //创建时间  
  67. 89.                  string createtime = dr["创建时间"].ToString().Trim();  
  68. 90.                  //性别  
  69. 91.                  string Sex = dr["性别"].ToString().Trim();  
  70. 92.                  //手机套餐类型  
  71. 93.                  string mobileType = dr["手机套餐类型"].ToString().Trim();  
  72. 94.                  //是否开通通信助理  
  73. 95.                  string isOpen = dr["是否开通通信助理"].ToString().Trim();  
  74. 96.                  //SQL   语句  
  75. 97.                  strSQL = "insert into msm_Excel(groupName,Mobile,Name,companyName,officeNum,homeNum,Emial,address,Createtime,Sex,mobileType,isOpen)values('" + groupname + "','" + mobile + "','" + contactName + "','" + companyName + "','" + officeNum + "','" + homeNum + "','" + Email + "','" + address + "','" + createtime + "','" + Sex + "','" + mobileType + "','" + isOpen + "')";  
  76. 98.                  try  
  77. 99.                  {  
  78. 100.                      int n = SQLHelper.SqlDataExecute(strSQL);  
  79. 101.                      if (n > 0)  
  80. 102.                      {  
  81. 103.                          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  

104. alert('数据插入成功!')  

105. // --></mce:script>");  

  1. 106.                          Label1.Text = "一共成功插入" + ds.Tables[j].Rows.Count.ToString() + "条数据";  
  2. 107.                      }  
  3. 108.                      else  
  4. 109.                      {  
  5. 110.                          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  

111. alert('服务器繁忙!请稍候再试..!')  

112. // --></mce:script>");  

  1. 113.                      }  
  2. 114.                  }  
  3. 115.                  catch (Exception ex)  
  4. 116.                  {  
  5. 117.                      throw ex;  
  6. 118.                  }  
  7. 119.               }  
  8. 120.          }                 
  9. 121.      }  
  10. 122.            
  11. 123.      else {  
  12. 124.          Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  

125. alert('此Excel文件中无数据!!!')  

126. // --></mce:script>");  

  1. 127.       }  
  2. 128.       
  3. 129.     }  

130. //调用  

131. //获取上传文件名  

  1. 132.         string fileName = FileUpload1.FileName;  
  2. 133.             //判断是否存在上传文件  
  3. 134.         if (FileUpload1.PostedFile.FileName.Length == 0) {  
  4. 135.             Page.RegisterStartupScript("", "<mce:script type="text/javascript"><!--  

136. alert('请选择你要上传的Excel文件!!')  

137. // --></mce:script>");  

  1. 138.         }  
  2. 139.          //判断上传的文件类型是否正确  
  3. 140.         else if (!Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xls") && !Path.GetExtension(FileUpload1.PostedFile.FileName).ToLower().Equals(".xlsx"))  
  4. 141.         {  
  5. 142.             Page.RegisterStartupScript("", "<script>alert('很抱歉!你上传的文件类型不正确!只能上传Excel类型的文件!')</script.");  
  6. 143.         }  
  7. 144.         else  
  8. 145.         {  
  9. 146.             //获取上传的文件路径  
  10. 147.             filePath = Server.MapPath("TxtFiles//") + DateTime.Now.ToString("yyyyMMddhhmmss") + fileName;  
  11. 148.             this.FileUpload1.PostedFile.SaveAs(filePath);  
  12. 149.             ds = GetDataSet(filePath);  
  13. 150.             InsertData(ds);  
  14. 151.         
  15. 152.         }  
posted @ 2017-10-20 10:02  赤狐(zcm123)  阅读(555)  评论(0编辑  收藏  举报