2013-12-20 39 views
0

我想將EXCEL數據表綁定到dataGridView?我認爲這很接近,但我不知道爲什麼數據沒有顯示在網格中。我在Stackoverflow上看到過幾篇文章,但我無法讓他們工作。所以我決定把自己的例子放在一邊,看看我能否讓某人去嘗試這段代碼。所有的表單需求都是一個帶有click事件和dataGridView的按鈕。將EXCEL工作表綁定到dataGridView?

類代碼:

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Net.Mail; 
    using System.Data.OleDb; 

    namespace TestExcel 
    { 
     public partial class Form1 : Form 
     { 
      public Form1() 
      { 
       InitializeComponent(); 
      } 

      private void button1_Click(object sender, EventArgs e) 
      { 
       String name = "Items"; 
       String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
           @"C:\Users\itpr13266\Desktop\test.xls" + 
           ";Extended Properties='Excel 8.0;HDR=YES;';"; 

       OleDbConnection con = new OleDbConnection(constr); 
       OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); 
       con.Open(); 

       OleDbDataAdapter sda = new OleDbDataAdapter(oconn); 
       DataTable data = new DataTable(); 
       sda.Fill(data); 
       dataGridView1.DataSource = data; 
      } 
     } 
    } 
+2

您是否嘗試過加入'dataGridView1.DataBind();'在結束了嗎? –

+0

你正在使用哪個版本的excel? –

+0

請參閱下面的代碼。 –

回答

2

更改connection string提供給下面給出,請檢查您的Excel文件的名稱是 「TEST.XLS」 和板材名稱是「項目」還是不是?

String filenamewithpath = @"C:\Users\itpr13266\Desktop\test.xls"; 

String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filenamewithpath + 
          ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; 

下面是完整的code.Works 100%

private void button1_Click(object sender, EventArgs e) 
    { 
     String name = "Items"; 
     String filenamewithpath = @"C:\Users\itpr13266\Desktop\test.xls"; 

     String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filenamewithpath + 
           ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; 

     OleDbConnection con = new OleDbConnection(constr); 
     OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); 
     con.Open(); 

     OleDbDataAdapter sda = new OleDbDataAdapter(oconn); 
     DataTable data = new DataTable(); 
     sda.Fill(data); 
     dataGridView1.DataSource = data; 
    } 
+0

我只是在我的Visual C#中設置它並製作了測試電子表格。我在早些時候測試了這個工作,但之後在家裏我沒有Excel 2010.我保存爲Microsoft 97,2000,XP仍然可以工作。如果不是的話,我會在星期一開始工作。我沒有將Sheet命名爲Items,因爲那是什麼,我認爲這就是SELECT語句爲數據源引用的內容。即使使用舊版本的EXCEL,您也會認爲這樣做會起作用,但我想知道如果這是以EXEL格式保存在Open Office中的文件,它是否會起作用。 Doug Hauf –

3

你缺少dataGridView1.DataBind()後​​

+0

這是一個Windows應用程序,並且不需要dataGridView1.DataBind(); –