最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding...
1 //读取Excel的帮助类 2 class SqExcellHelper 3 { 4 public static DataTable GetData(string tablename) 5 { 6 DataTable dtEmp = new DataTable(tablename); 7 OleDbConnection con = new OleDbConnection(); 8 // Persist Security Info 布尔类型.为True时,表明采用集成安全机制;若为False,则表明不采用集成安全机制。 9 //con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 10 //"Data Source = Employee.xlsx;Persist Security Info=False;Mode=ReadWrite;Extended Properties=Excel 8.0"; 11 12 //string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + Server.MapPath("ExcelFiles/Mydata2007.xlsx") + "; 13 //Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; 14 //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串) 15 //备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。 16 // "IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。 17 18 // 注: 根据需求,这里的Data Source 是数据源;根据需要改成你需要的文件名称 * 19 20 con.ConnectionString = "Provider=Microsoft.Ace.OleDb.12.0;" + 21 "Data Source = prize.xls;Extended Properties='Excel 12.0; HDR=Yes; IMEX=1';"; 22 23 try 24 { 25 26 con.Open(); 27 //string sql = "Select * from [Sheet1$]"; 28 OleDbDataAdapter da = new OleDbDataAdapter("Select * from [Sheet1$]", con); 29 da.Fill(dtEmp); 30 } 31 catch (Exception ex) 32 { 33 34 Console.WriteLine(ex.Message); 35 } 36 finally 37 { 38 con.Close(); 39 } 40 return dtEmp; 41 }
这里没有用到三层,后面的代码就是直接加载数据到WinForm数据控件中,代码如下:
/// <summary> /// 窗体加载事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainYJ_Load(object sender, EventArgs e) { string sql = "Select * from [Sheet1$]"; DataTable dtp = SqlHelper.GetData(sql); this.dataGridView1.DataSource = dtp; int randnum = (dtp.Rows.Count - 1); this.textBox1.Text = dtp.Rows[randnum]["奖品名称"].ToString(); }
效果图:
由于WinForm 实际开发中,用的不太多,这里只是做了一个简单的Demo,如果有错误,请原子中的朋友指出,谢谢!
相关链接:http://blog.csdn.net/pan_junbiao/article/details/8872936