c# winform 把Excel里的数据导入到Oracle数据库里,读取excel到dataset

winform程序,点击程序上的按钮,找到Excel文件,打开后把这个Excel里的数据导入到oracle数据库里

C#代码
  1. #region 导入Excel数据到数据库  
  2.   
  3. private void button3_Click(object sender, EventArgs e)  
  4. {  
  5.     DataSet ds; 
  6.    OpenFileDialog openFileDialog1= new OpenFileDialog();
                openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
                openFileDialog1.Filter = "Excel文件(*.xls)|*.xls";
                openFileDialog1.RestoreDirectory = true;
                openFileDialog1.FilterIndex = 1;
  7.     if (openFileDialog1.ShowDialog() == DialogResult.OK)  
  8.     {  
  9.         ds = ImportExcel(this.openFileDialog1.FileName);//获得Excel  
  10.     }  
  11.     else  
  12.     {  
  13.         return;  
  14.     }  
  15.   
  16.     int odr = 0;  
  17.   
  18.     OracleConnection conn = dbc.getConnection();//获得conn连接  
  19.   
  20.     try  
  21.     {  
  22.         conn.Open();  
  23.   
  24.         OracleCommand cmd = conn.CreateCommand();  
  25.   
  26.         cmd.CommandText = "INSERT INTO kk.kkhmd (xh,hpzl,hphm,bz,larq,fdjh,clpp,cjh,jdcsyr,cllx,csys) VALUES(:xh,:hpzl,:hphm,:bz,:larq,:fdjh,:clpp,:cjh,:jdcsyr,:cllx,:csys) ";//删除记录  
  27.   
  28.         int dsLength = ds.Tables[0].Rows.Count;//获得Excel中数据长度  
  29.   
  30.         for (int i = 1; i < dsLength; i++)  
  31.         {  
  32.             cmd.Parameters.Add("xh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][0];  
  33.             cmd.Parameters.Add("hpzl", OracleType.VarChar).Value = ds.Tables[0].Rows[i][1];  
  34.             cmd.Parameters.Add("hphm", OracleType.VarChar).Value = ds.Tables[0].Rows[i][2];  
  35.             cmd.Parameters.Add("bz", OracleType.VarChar).Value = ds.Tables[0].Rows[i][3];  
  36.             cmd.Parameters.Add("larq", OracleType.DateTime).Value = ds.Tables[0].Rows[i][4];  
  37.             cmd.Parameters.Add("fdjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][5];  
  38.   
  39.             cmd.Parameters.Add("clpp", OracleType.VarChar).Value = ds.Tables[0].Rows[i][6];  
  40.             cmd.Parameters.Add("cjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][7];  
  41.             cmd.Parameters.Add("jdcsyr", OracleType.VarChar).Value = ds.Tables[0].Rows[i][8];  
  42.   
  43.             cmd.Parameters.Add("cllx", OracleType.VarChar).Value = ds.Tables[0].Rows[i][9];  
  44.             cmd.Parameters.Add("csys", OracleType.VarChar).Value = ds.Tables[0].Rows[i][10];  
  45.   
  46.             odr = cmd.ExecuteNonQuery();//提交  
  47.         }  
  48.   
  49.         //如果查到了数据,才使控制分页按钮生效  
  50.         if (odr > 0 )  
  51.         {  
  52.             MessageBox.Show("导入成功");  
  53.         }  
  54.         conn.Close();  
  55.     }  
  56.     catch (Exception ee)  
  57.     {  
  58.         MessageBox.Show(ee.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);  
  59.     }  
  60.   
  61. }  
  62.   
  63.           
  64. public static DataSet ImportExcel(string file)  
  65. {  
  66.     FileInfo fileInfo = new FileInfo(file);  
  67.     if (!fileInfo.Exists)  
  68.         return null;  
  69.   
  70.     string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'";  // HDR=YES 为表的第一行不作为数据读入
  71.     OleDbConnection objConn = new OleDbConnection(strConn);  
  72.     DataSet dsExcel = new DataSet();  
  73.     try  
  74.     {  
  75.         objConn.Open();  
  76.         string strSql = "select * from  [Sheet1$]";  
  77.         OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn);  
  78.         odbcExcelDataAdapter.Fill(dsExcel);  
  79.         return dsExcel;  
  80.     }  
  81.     catch (Exception ex)  
  82.     {  
  83.         throw ex;  
  84.     }  
  85. }  
  86. #endregion  
#region 导入Excel数据到数据库  private void button3_Click(object sender, EventArgs e) { 	DataSet ds; 	if (openFileDialog1.ShowDialog() == DialogResult.OK) 	{ 		ds = ImportExcel(this.openFileDialog1.FileName);//获得Excel 	} 	else 	{ 		return; 	}  	int odr = 0;  	OracleConnection conn = dbc.getConnection();//获得conn连接  	try 	{ 		conn.Open();  		OracleCommand cmd = conn.CreateCommand();  		cmd.CommandText = "INSERT INTO kk.kkhmd (xh,hpzl,hphm,bz,larq,fdjh,clpp,cjh,jdcsyr,cllx,csys) VALUES(:xh,:hpzl,:hphm,:bz,:larq,:fdjh,:clpp,:cjh,:jdcsyr,:cllx,:csys) ";//删除记录  		int dsLength = ds.Tables[0].Rows.Count;//获得Excel中数据长度  		for (int i = 1; i < dsLength; i++) 		{ 			cmd.Parameters.Add("xh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][0]; 			cmd.Parameters.Add("hpzl", OracleType.VarChar).Value = ds.Tables[0].Rows[i][1]; 			cmd.Parameters.Add("hphm", OracleType.VarChar).Value = ds.Tables[0].Rows[i][2]; 			cmd.Parameters.Add("bz", OracleType.VarChar).Value = ds.Tables[0].Rows[i][3]; 			cmd.Parameters.Add("larq", OracleType.DateTime).Value = ds.Tables[0].Rows[i][4]; 			cmd.Parameters.Add("fdjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][5];  			cmd.Parameters.Add("clpp", OracleType.VarChar).Value = ds.Tables[0].Rows[i][6]; 			cmd.Parameters.Add("cjh", OracleType.VarChar).Value = ds.Tables[0].Rows[i][7]; 			cmd.Parameters.Add("jdcsyr", OracleType.VarChar).Value = ds.Tables[0].Rows[i][8];  			cmd.Parameters.Add("cllx", OracleType.VarChar).Value = ds.Tables[0].Rows[i][9]; 			cmd.Parameters.Add("csys", OracleType.VarChar).Value = ds.Tables[0].Rows[i][10];  			odr = cmd.ExecuteNonQuery();//提交 		}  		//如果查到了数据,才使控制分页按钮生效 		if (odr > 0 ) 		{ 			MessageBox.Show("导入成功"); 		} 		conn.Close(); 	} 	catch (Exception ee) 	{ 		MessageBox.Show(ee.Message.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 	}  }  		 public static DataSet ImportExcel(string file) { 	FileInfo fileInfo = new FileInfo(file); 	if (!fileInfo.Exists) 		return null;  	string strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"; 	OleDbConnection objConn = new OleDbConnection(strConn); 	DataSet dsExcel = new DataSet(); 	try 	{ 		objConn.Open(); 		string strSql = "select * from  [Sheet1$]"; 		OleDbDataAdapter odbcExcelDataAdapter = new OleDbDataAdapter(strSql, objConn); 		odbcExcelDataAdapter.Fill(dsExcel); 		return dsExcel; 	} 	catch (Exception ex) 	{ 		throw ex; 	} } #endregion


还有一个是读到DataTable里

用oledb方式读取excel到datatable,然后再写入数据库。

C#代码
  1. private DataTable GetData(string strPath)   
  2. {   
  3.     DataTable dtbl = new DataTable();   
  4.     try   
  5.     {   
  6.         string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strPath + ";" + "Extended Properties=Excel 8.0;";   
  7.         string strSheetName = "";   
  8.         using (OleDbConnection con = new OleDbConnection(strCon))   
  9.         {   
  10.             con.Open();   
  11.             DataTable dtbl1 = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);   
  12.             //dataGridView2.DataSource = dtbl1;   
  13.             strSheetName = dtbl1.Rows[0][2].ToString().Trim();   
  14.         }   
  15.         String strCmd = "select * from [" + strSheetName + "]";   
  16.         OleDbDataAdapter cmd = new OleDbDataAdapter(strCmd, strCon);   
  17.         cmd.Fill(dtbl);   
  18.     }   
  19.     catch (Exception ex) { MessageBox.Show(ex.Message); }   
  20.     return dtbl;   

posted @ 2009-11-09 12:35  单康丽  阅读(1020)  评论(0编辑  收藏  举报