最近教學中,需要用到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