Как заполнить имена excelsheetcloumn в выпадающий список? - PullRequest
0 голосов
/ 18 января 2012

Привет, у меня есть лист Excel с заголовками, я хочу заполнить эти заголовки в раскрывающемся списке ...

Может ли кто-нибудь помочь мне с оператором выбора и процедурой

яработая над кодом, я не знаю, правильно ли он или нет

      DropDownList list = new DropDownList();
                    string connectionstring = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", Excelpath);  
                    string query1 =  String.Format("select * from [{0}]", DDlist.SelectedItem.Text);                                             
                    // OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query1, connectionstring);                                                
                    using (OleDbConnection conn1 = new OleDbConnection(connectionstring))
                    {
                        OleDbCommand odc1 = new OleDbCommand(string.Format(query1, conn1));
                        conn1.Open();
                        OleDbDataReader dr;
                        dr = odc1.ExecuteReader();
                        while (dr.Read())
                        {
                            list.Items.Add(dr[column.ColumnName].ToString());
                        }
                        dr.Close();
                        conn1.Close();
                    }

в этом методе я получаю сообщение об ошибке в этой строке

    dr = odc1.ExecuteReader();Error:ExecuteReader: Connection property has not been initialized.

Может ли кто-нибудь помочь mw с этим, спасибозаранее

Ответы [ 3 ]

0 голосов
/ 18 января 2012

Класс OleDbCommand имеет два основных параметра, которые необходимо передать для правильного выполнения.Это запрос и объект подключения.В вашем коде вы передаете соединение, но оно находится внутри String.Format(), поэтому разместите его снаружи.См. Код ниже ....

OleDbCommand odc1 = new OleDbCommand(string.Format(query1, conn1)); 

TO

OleDbCommand odc1 = new OleDbCommand(query1, conn1); 
0 голосов
/ 13 февраля 2012

попробуйте это может работать .....

                  foreach (DataTable table in DS.Tables)
          {
               foreach (DataColumn column in table.Columns)
                {
                   DropDownList list = new DropDownList();
                   string connectionstring = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;""", Excelpath);
                   string query1 = String.Format("select * from [{0}]", DDlist.SelectedItem.Text);                                                                      
                   using (OleDbConnection conn1 = new OleDbConnection(connectionstring))
                   {
                       OleDbCommand odc1 = new OleDbCommand(query1, conn1);
                       conn1.Open();
                        DataTable dte = null;
                       DataSet ds = new DataSet();
                       dte = conn1.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                       OleDbDataAdapter objAdapter1 = new OleDbDataAdapter();
                       objAdapter1.SelectCommand = odc1;
                       objAdapter1.Fill(ds, "xldata");
                        for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
                       {
                           list.Items.Add(ds.Tables[0].Columns[i].ColumnName.ToString());
                       }
                       conn1.Close();
                    }
0 голосов
/ 18 января 2012

Я думаю, вы не передаете Соединение с OleDBCommand.Так что попробуйте,

OleDbCommand odc1 = new OleDbCommand(query1, conn1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...