Ví dụ về Interop Excel C#

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,

  1. Click vào nút Browse, ổ C, Microsoft Office, Office12, sau đó mở EXCEL. EXE
  2. 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 <= rowCount; i++)
{
    for (int j = 1; j <= colCount; j++)
    {
        //new line
        if (j == 1)
            Console.Write("\r\n");

        //write the value to the console
        if (xlRange.Cells[i, j] != null && xlRange.Cells[i, j].Value2 != null)
            Console.Write(xlRange.Cells[i, j].Value2.ToString() + "\t");

        //add useful things here!   
    }
}

Cuối cùng, các tham chiếu đến bộ nhớ không được quản lý phải được giải phóng. Nếu điều này không được thực hiện đúng cách thì sẽ có các quy trình kéo dài giữ quyền truy cập tệp ghi vào sổ làm việc Excel của bạn

Interop Excel là gì?

Microsoft Office Interop (Tự động hóa Excel) là một tùy chọn khi tạo/đọc các tệp Excel (XLS, XLSX, CSV) từ C# hoặc VB. NET , nhưng nó có nhiều nhược điểm.

Làm cách nào để tạo tệp Excel trong C# với Interop?

Tạo tệp Excel bằng dịch vụ Interop .
Trước hết chúng ta phải tạo một Ứng dụng Bảng điều khiển mới; . Mở Visual Studio. .
Chọn >> Menu dự án >> Nhấp vào Thêm tài liệu tham khảo >> Chọn tab COM >>
Viết mã dưới đây để tạo tệp Excel. sử dụng Hệ thống;

Làm cách nào để sử dụng ứng dụng Microsoft Office Interop Excel trong C#?

Để thêm tài liệu tham khảo .
Trong Solution Explorer, nhấp chuột phải vào tên dự án của bạn rồi nhấp vào Thêm tài liệu tham khảo. Hộp thoại Thêm tham chiếu xuất hiện
Trên trang Assemblies, chọn Microsoft. Văn phòng. tương tác. Word trong danh sách Tên thành phần, sau đó giữ phím CTRL và chọn Microsoft. Văn phòng. tương tác. Excel. .
Nhấp vào OK

Tôi có thể tải xuống Microsoft Office Interop Excel DLL ở đâu?

văn phòng. tương tác. vượt trội. dll miễn phí tải về. Tệp DLL. com .