cainiaoyu

excel的导入

private void A2_ServerClick(object sender, System.EventArgs e)
		{
			string dataname = "BJJG20121218";//数据库名字  ClManage            
			if (FuloadExcelFile.Value == "")//FuloadExcelFile是上传控件FileUpload,   
			{  
				Response.Write("<script>alert(\'请选择有效的excel文件\')</script>"); 
			}  
			else  
			{  
				string fileExt = System.IO.Path.GetExtension(FuloadExcelFile.PostedFile.FileName);  
				if (fileExt != ".xls")//必须是EXCEL文件   
				{  
					Response.Write("<script>alert(\'请导入excel文件\')</script>");   
				}  
				else  
				{  
					string filepath = FuloadExcelFile.PostedFile.FileName;//文件路径,FuloadExcelFile为上传文件的控件   
  
					DataTable dt = new DataTable();  
					dt = GetDataFromExcelWithAppointSheetName(filepath);  
				    if (InsertSQLServer(dt, dataname))//导入数据库   
					{   
						Response.Write("<script>alert(\'成功插入"+dt.Rows.Count+"条数据\')</script>");  
					}  
					else  
					{  
						Response.Write("失败!");  
					}  
  
				}  
			}  

		}
//插入数据 dt为获取的excel,dataname为数据库名字   
		protected bool InsertSQLServer(DataTable dt, string dataname)  
		{  
             string d = dt.Rows[0][1].ToString();
			string strCon = @"Data Source=localhost;Trusted_Connection=false;User ID=sa;Password=sa;database=BJJG20121218";//无数据库名连接   
			string strTest = "userInfo";//表的名字   
			try  
			{  
				SqlConnection con = new SqlConnection(strCon);//创建数据库   
				con.Open();  
				string strSQL = "IF NOT EXISTS(SELECT name FROM sys.databases WHERE name=N\'" + dataname + "\') CREATE DATABASE [" + dataname + "]";  
				SqlCommand command = new SqlCommand(strSQL, con);  
				command.ExecuteNonQuery();  
				#region
				//创建数据库表   
//				strSQL = "USE[" + dataname + "] IF NOT EXISTS(SELECT * FROM sys.objects WHERE object_id=OBJECT_ID(N\'[DBO].[" + strTest + "]\') AND type in (N\'U\')) CREATE TABLE " + strTest + " (";  
//				string strColumn = string.Empty;  
//				for (int i = 0; i < dt.Columns.Count; i++)  
//				{  
//					strSQL += "[" + dt.Columns[i].ColumnName + "] [nvarchar](256),";  
//					strColumn += dt.Columns[i].ColumnName + ",";  
//				}  
//				strSQL += " )";  
//				SqlCommand newcom = new SqlCommand(strSQL, con);  
//				newcom.ExecuteNonQuery();  
  
				//插入数据   
//				strColumn = strColumn.Substring(0, strColumn.Length - 1);  
				#endregion
				for (int i = 0; i < dt.Rows.Count; i++)//将i=0改为i=1可以再第二行加中文注释   
				{  
//					strSQL = "USE[" + dataname + "] Insert into " + strTest + " (" + strColumn + ") values (";
					strSQL = "USE[" + dataname + "] Insert into " + strTest + " 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();  
					//加一个session["no"]=dt.Rows.Count.toString();可以知道导入几条(注意要减1)   
				}  
				return true;  
			}  
			catch  
			{  
				return false;  
			}  
		} 

  

//excel数据源 path为excel的路径   
		private DataTable GetDataFromExcelWithAppointSheetName(string path)  
		{  
			//连接串   
			string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + ";" + "Extended Properties=\'Excel 8.0;HDR=YES;IMEX=1\'";  
			OleDbConnection conn = new OleDbConnection(strConn);  
  
			conn.Open();  
  
			//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等   
			DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null,null, null, "Table" });  
  
			//包含excel中表名的字符串数组   
			string[] strTableNames = new string[dtSheetName.Rows.Count];  
			for (int k = 0; k < dtSheetName.Rows.Count; k++)  
			{  
				strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();  
			}  
  
			OleDbDataAdapter myCommand = null;  
			DataTable dt = new DataTable();  
  
			//从指定的表明查询数据,可先把所有表明列出来供用户选择   
			string strExcel = "select * from [" + strTableNames[0] + "]";  
			myCommand = new OleDbDataAdapter(strExcel, strConn);  
			dt = new DataTable();  
			myCommand.Fill(dt);  
			conn.Close();  
			conn.Dispose();  
  
			//this.GridView1.DataSource = dt;   
			//this.GridView1.DataBind();   
  
			return dt;  
		}  

                                                                                                                                                                                                                      ---------------转-----------------

  

发表于 2013-02-01 11:11  巨人雨  阅读(115)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-12-25
  • 2021-12-25
  • 2022-01-07
  • 2022-12-23
猜你喜欢
  • 2021-11-15
  • 2021-04-24
  • 2021-06-10
  • 2021-12-08
  • 2021-12-09
  • 2022-12-23
  • 2021-12-25
相关资源
相似解决方案