2010-12-14 36 views
5

Tôi đang cố gắng nhập dữ liệu từ excel vào một datatable bằng cách sử dụng C#. Đây là mã tôi sử dụng để làm như vậy ...Nhập dữ liệu Excel vào C# mà không có hàng đầu tiên trở thành tên cột?

string ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
        "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;" + 
        "Extended Properties=\"Excel 8.0;HRD=No;IMEX=1;\""; 
OleDbDataAdapter SheetAdapter = new OleDbDataAdapter("select * from ["Sheet1"]", conn); 
System.Data.DataTable excelData = new System.Data.DataTable(); 
SheetAdapter.Fill(excelData); 
excelData.TableName = "excelData"; 

foreach (DataRow row in excelData.Rows) 
{ 
    ProcessDataRow(row); 
} 

Khi tôi xem dữ liệu trong khi gỡ lỗi hàng đầu tiên của dữ liệu đã trở thành tên cột của bảng. Tôi không hiểu tại sao điều này xảy ra khi tôi đặt HDR = Không vào chuỗi kết nối. Có cách nào để buộc DataTable không lấy hàng đầu tiên làm tên cột không?

Trả lời

5

Các mẫu mã mà bạn cung cấp có HRD=No thay vì HDR=No

+0

Ôi trời ... Đó là nó. Tôi đã dành quá nhiều thời gian cho việc này. Cảm ơn – PICyourBrain

0

Tôi đã sử dụng NPOI library chỉ cho công việc bạn hỏi và hơn thế nữa. Hạn chế duy nhất là nó chưa thể xử lý định dạng Excel 2007, vì vậy bạn bị giới hạn ở định dạng 97-2003.

+0

Tôi thích sử dụng cách tiếp cận bộ chuyển đổi dữ liệu ole tôi. Không có hội đồng bên ngoài để phân phối. Hỗ trợ tất cả các tập tin xls hiện tại. và không khó sử dụng. (Giả sử bạn không trộn HRD và HDR!) – PICyourBrain

+0

@Jordan. Tôi đồng ý trong trường hợp của bạn, nó có ý nghĩa để chỉ sử dụng OleDataAdapter. Tuy nhiên, nếu/khi ứng dụng của bạn trở nên phức tạp hơn và/hoặc khách hàng của bạn muốn nhiều tính năng hơn, tuyến đường mà bạn đã thực hiện sẽ trở thành một kết thúc chết. – AngryHacker

Các vấn đề liên quan