2013-04-09 17 views
6

Używam Microsoft.ACE.OLEDB.12.0 do łączenia się z programem Microsoft Excel i pobierania z niego danych. Piszę moje kody w języku C# za pomocą programu Visual Studio 2012. tutaj jest mój kod:OLEDB Nie zwraca pierwszego wiersza pliku excel

public DataTable getData(string fileName, string sheetName) 
{ 
    connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" 
         + fileName 
         + "';Extended Properties= 'Excel 8.0;HDR=Yes;IMEX=1'"; 

    errorCode = ErrorDefinition.ERROR_NOERROR; 
    errorMessage = ""; 
    DataTable dt = new DataTable();    
    try 
    { 
      string query = "SELECT * FROM [" + sheetName + "]"; 
      OleDbConnection con = new OleDbConnection(connectionString); 
      OleDbDataAdapter dataAdapter = new OleDbDataAdapter(query, con); 
      dataAdapter.Fill(dt); 
    } 
    catch (Exception exp) 
    { 
      errorCode = ErrorDefinition.ERROR_OLEDBERROR; 
      errorMessage = exp.Message; 
    } 
    return dt; 
} 

Problemem jest to, że dt nie zawiera pierwszy wiersz arkusza w określonym pliku. Co jest z tym nie tak? Każda pomoc jest doceniana w zaawansowanych.

Odpowiedz

17

W ciągu połączenia użyć ustawienia "HDR=YES", oznacza to, że pierwszy wiersz Ci plik Excel jest traktowany przez OleDb jak nazwy pól w tabeli powrócił z bieżącego arkusza.

Używanie wskazuje dla OleDb, że pierwszy wiersz zawiera dane, a nazwy kolumn są automatycznie nazywane w postępie. jako "F1", "F2", "F3" itp.

+2

+1. Więcej informacji na http://connectionstrings.com/excel –

2

Spróbuj HDR=NO w ciągu połączenia

Powiązane problemy