Trong bài viết này, chúng ta sẽ tìm hiểu cách đọc một file excel bằng thư viện Interop excel của Microsoft. Có rất nhiều thư viện excel miễn phí/trả phí có sẵn trong trình quản lý Nuget. Bạn có thể kiểm tra bài viết khác của tôi về cùng một loạt excel với thư viện excel khác. Chúng tôi sẽ tạo một ứng dụng windows mới bằng C# để thực hiện điều này. Hãy bắt đầu
Bước 1
Mở Visual Studio. Chọn Dự án mới, sau đó chọn Ứng dụng biểu mẫu Windows
Bước 2
Đặt tên cho nó như bạn muốn. Tên ứng dụng của tôi là ReadExcelFileApp
Bước 3
Trước hết, thêm Reference của thư viện Excel. Nhấp chuột phải vào Tài liệu tham khảo trong trình khám phá giải pháp
Tập hợp, Tiện ích mở rộng, sau đó là Microsoft. Văn phòng. tương tác. Excel
Nếu bạn đang sử dụng Visual Studio 2010, thì bạn có thể thêm Tham chiếu bằng hai cách
Nhấp chuột phải vào Tài liệu tham khảo rồi chọn Thêm tài liệu tham khảo. Sau đó, một hộp thoại xuất hiện,
- Click vào nút Browse, ổ C, Microsoft Office, Office12, sau đó mở EXCEL. EXE
- Lựa chọn. NET rồi chọn Microsoft. Văn phòng. tương tác. Excel
Bước 4
Sau khi thêm Tham chiếu, hãy thêm không gian tên bằng cách sử dụng Excel = Microsoft. Văn phòng. tương tác. Excel;
Bước 5
Thêm hai nút Chọn và Đọc tệp và Đóng
Bước 6
Thêm một DataGridView để xem kết quả [dữ liệu excel]
Bước 7
Tạo một phương thức ReadExcel trả về một dữ liệu có thể sử dụng logic sau
public DataTable ReadExcel[string fileName, string fileExt] {
string conn = string.Empty;
DataTable dtexcel = new DataTable[];
if [fileExt.CompareTo[".xls"] == 0] conn = @ "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HRD=Yes;IMEX=1';"; //for below excel 2007
else conn = @ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties='Excel 12.0;HDR=NO';"; //for above excel 2007
using[OleDbConnection con = new OleDbConnection[conn]] {
try {
OleDbDataAdapter oleAdpt = new OleDbDataAdapter["select * from [Sheet1$]", con]; //here we read data from sheet1
oleAdpt.Fill[dtexcel]; //fill excel data into dataTable
} catch {}
}
return dtexcel;
}
Bước 8
Hãy thảo luận điều gì đó về phương thức ReadExcel[]
Đầu tiên, chúng tôi sẽ quyết định xem tệp có phần mở rộng hay không. xls hoặc. xlsx vì có sự khác biệt giữa chuỗi kết nối của cả hai tệp
Nếu tệp có phần mở rộng. xls, thì chuỗi kết nối sẽ như sau
nhà cung cấp=Microsoft. máy bay phản lực. OLEDB. 4. 0;Nguồn dữ liệu='tên tệp';Thuộc tính mở rộng='Excel 8. 0;HRD=Có;IMEX=1';
Nếu không thì
Nhà cung cấp=Microsoft. ÁT CHỦ. OLEDB. 12. 0;Nguồn dữ liệu='Tên tệp';Thuộc tính mở rộng='Excel 12. 0;HDR=KHÔNG';"
Ở đây HDR là trường tiêu đề, tùy thuộc vào bạn, có muốn thêm nó hay không,
IMEX=1 được sử dụng để truy xuất dữ liệu hỗn hợp từ các cột
Bây giờ bằng cách sử dụng OleDbConnection xác định một OleDbDataAdapter
OleDbDataAdapter oleAdpt =newOleDbDataAdapter["chọn * từ [Sheet1$]", con];
Ở đây Sheet1 là số sheet mà bạn muốn chọn, bạn chọn sheet nào cũng được. g. Trang tính 2, Trang tính 3, v.v. Nếu bạn muốn chọn một số cột cụ thể, thì bạn có thể. Ví dụ: nếu bạn chỉ muốn đọc 2 cột Tên và Lương từ tệp excel thì truy vấn của bạn như sau
Chọn Tên,Lương từ [Sheet1$]
Nếu không có tiêu đề trong các tệp excel phức tạp thì bạn có thể chọn các cột như F1, F20, v.v. Trong trường hợp đó, truy vấn giống như sau
NET 4+ cho phép C# đọc và thao tác với các tệp Microsoft Excel, dành cho máy tính đã cài đặt Excel [nếu bạn chưa cài đặt Excel, hãy xem NPOI]
Đầu tiên, thêm tham chiếu đến Microsoft Excel XX. Thư viện đối tượng X, nằm trong tab COM của Trình quản lý tham chiếu. Tôi đã đặt bí danh sử dụng của Excel này
using Excel = Microsoft.Office.Interop.Excel; //Microsoft Excel 14 object in references-> COM tab
Tiếp theo, bạn sẽ cần tạo tham chiếu cho từng đối tượng COM được truy cập. Mỗi tham chiếu phải được lưu giữ để thoát khỏi ứng dụng một cách hiệu quả khi hoàn thành
//Create COM Objects. Create a COM object for everything that is referenced
Excel.Application xlApp = new Excel.Application[];
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open[@"sandbox_test.xlsx"];
Excel._Worksheet xlWorksheet = xlWorkbook.Sheets[1];
Excel.Range xlRange = xlWorksheet.UsedRange;
Sau đó, bạn có thể đọc từ trang tính, hãy nhớ rằng việc lập chỉ mục trong Excel không dựa trên 0. Điều này chỉ đọc các ô và in lại chúng giống như trong tệp
//iterate over the rows and columns and print to the console as it appears in the file
//excel is not zero based!!
for [int i = 1; i Menu dự án >> Nhấp vào Thêm tài liệu tham khảo >> Chọn tab COM >>