2013-04-09 29 views
6

Tôi đang sử dụng Microsoft.ACE.OLEDB.12.0 để kết nối với tệp excel của Microsoft và tìm nạp dữ liệu từ tệp đó. Tôi viết mã của tôi trong ngôn ngữ C# sử dụng Visual Studio 2012. ở đây là mã của tôi:OLEDB Không trả lại hàng đầu tiên của tệp 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; 
} 

Vấn đề là dt không chứa dòng đầu tiên của tờ quy định trong hồ sơ. Có gì sai với nó? Mọi trợ giúp đều được đánh giá cao.

Trả lời

17

Trong chuỗi kết nối của bạn, bạn sử dụng các thiết lập "HDR=YES", điều này có nghĩa rằng hàng đầu tiên bạn file Excel của bạn được xử lý bởi OleDb như tên trường của bảng trở về từ bảng hiện tại.

Sử dụng "HDR=NO" cho biết OleDb là hàng đầu tiên chứa dữ liệu và tên cột được tự động đặt tên, đang diễn ra. dưới dạng "F1", "F2", "F3", v.v.

+2

+1. Thông tin thêm về http://connectionstrings.com/excel –

2

Hãy thử HDR=NO liên chuỗi