2014-01-30 4 views
0

привет, я пытаюсь получить лист excel из любого места на компьютере, и всякий раз, когда кто-то просматривает и выбирает лист excel, я хочу, чтобы его имена столбцов были указаны в поле со списком. До сих пор у меня был сложный код, и я все еще получаю небольшую ошибку: «Механизм базы данных Microsoft Access не смог найти столбцы объекта». Убедитесь, что объект существует, и вы правильно указали его имя и имя пути. «columns» не является локальным объектом, проверьте сетевое подключение или обратитесь к администратору сервера « Но я успешно реализую тот же код в базе данных SQL Server. эта ошибка возникает только тогда, когда я пытаюсь получить доступ к листу Excel. почему эта ошибка приходит и как ее исправить? Спасибо.Как получить имена столбцов excel в поле со списком C#?

private String openfile() 
    { 

     string tempPath = ""; 
     OpenFileDialog fDialog = new OpenFileDialog(); 
     fDialog.Title = "open MSexcel file "; 
     fDialog.Filter = "All Files(*.*)|*.*"; 
     fDialog.InitialDirectory = @"C:\"; 
     if (fDialog.ShowDialog() == DialogResult.OK) 
     { 

       tempPath = fDialog.FileName; 
       return tempPath; 

     } 
     return null; 
    } 

    private void openpath(string path) 
    { 

     newconn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" 
        + Convert.ToString(path) + ";Extended Properties=\"Excel 12.0;HDR={1}\";"); 




    } 

    private void loadtolist() 
    { 
     newconn.Open(); 
     cmb.Items.Clear(); //cmb is combo box name 
     newcmd = new OleDbCommand(); 
     newcmd.Connection = newconn; 
     newcmd.CommandType = CommandType.Text; 
     newcmd.CommandText = "SELECT column_name from information_schema.columns where table_name = 'BigData' Order by ordinal_position"; 

     dr = newcmd.ExecuteReader(); 
     if (dr.HasRows) 

     { 
      while (dr.Read()) 
      { 
       cmb.Items.Add(dr[0].ToString()); 
      } 

     } 
     dr.Close(); 
     newconn.Close(); 
    } 

ответ

0

Дайте попробовать на это ..

string connectionString = string.Format(Thread.CurrentThread.CurrentCulture, "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=YES;'", excelFilePath); 
    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); 
    using (DbConnection connection = factory.CreateConnection()) 
    { 
     connection.ConnectionString = connectionString; 
     using (DbCommand command = connection.CreateCommand()) 
     { 
      command.CommandText = @"SELECT [File], [ItemName], [ItemDescription], [Photographer name], [Date], [Environment site] FROM [Metadata$]"; 
      connection.Open(); 
      using (DbDataReader dr = command.ExecuteReader()) 
      { 
       if (dr.HasRows) 
       { 
        while (dr.Read()) 
        { 
         ....... 
        } 
       } 
      } 
      connection.Close(); 
     } 
    } 
Смежные вопросы