2013-12-20 2 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 Поставщиком ниже дается как проверить ваше имя файла Эксел «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 это все еще будет работать. Если нет, я попробую в понедельник, когда я приеду на работу. Я назвал лист для элементов, потому что это то, что я думаю, это то, что оператор SELECT ссылается на источник данных. Вы могли бы подумать, что это сработает даже со старой версией EXCEL, но мне интересно, будет ли это работать, если это файл, сохраненный в Open Office в формате EXEL. Дуг Хауф –

3

Вы пропали без вести после того, как dataGridView1.DataBind()dataGridView1.DataSource = data;

+0

это приложение для Windows, и нет необходимости в dataGridView1.DataBind(); –

Смежные вопросы