Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C#

Đọc file Excel sử dụng thư viện Open XML bằng C#

Excel là 1 trong những công cụ lưu trữ dữ liệu đơn giản, hiệu quả được nhiều cá nhân tổ chức sử dụng. Chính vì vậy mà khi muốn đưa các dữ liệu đó vào các sản phẩm tin học thì việc đọc được file đó để sử dụng là điều bắt buộc đối với các lập trình viên.

Bài viết dưới đây sẽ hướng dẫn các bạn cách đọc file Excel bằng C# sử dụng thư viện Open XML. Mình sẽ show kết quả đọc file bằng cách tạo 1 website demo nho nhỏ nhé.

Nào bắt tay vào triển khai luôn thôi.

 Open XML là gì?

Open XML là 1 thư viện của bởi Microsoft, nó ra đời nhằm giúp các nhà phát triển có thể thao tác với các tài liệu được sinh ra từ Microsoft Office như: .docx, .xlsx, .pptx và 1 số định dạng khác của Microsoft Office.

Phiên bản hiện tại của thư viện Open XML là version 2.10.1

Các bạn có thể xem chi tiết về thư viện này từ website của Microsoft qua đường dẫn dưới đây.

https://docs.microsoft.com/en-us/office/open-xml/open-xml-sdk

Hướng dẫn cài đặt Open XML trên 1 dự án C#

Để cài đặt Open XML lên project sử dụng ngôn ngữ lập trình C# là vô cùng đơn giản. Các bạn có 2 cách để cài đặt là thông qua cửa sổ dòng lệnh Nuget package console hoặc qua màn hình giao diện Manage Packages for Solution.

2 cách này đều rất dễ thực hiện.

Đối với việc cài đặt qua cửa sổ lệnh Nuget package console thì các bạn làm các bước như sau.

Bước 1: Trên thanh menu các bạn vào Tools => sau đó vào Nuget Package Manager => tiếp theo các bạn chọn Nuget package console

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 1
Cách 1: Cài đặt thư viện Open XML bằng cửa sổ lệnh Nuget package console

Bước 2: Dán đoạn lệnh sau vào cửa sổ dòng lệnh Nuget package console

Install-Package DocumentFormat.OpenXml -Version

Bước 3: Thay –version thành phiên bản mà bạn muốn cài đặt. Ở thời điểm của bài viết này thì version mới nhất của OpenXML là phiên bản 2.10.1. Sau khi sửa xong các bạn nhấn OK để Visual Studio tự động cài đặt thư viện cho các bạn.

Như vậy là các bạn đã cài đặt xong thư viện OpenXML lên dự án của mình rồi.

Đối với việc cài đặt thư viện OpenXML bằng cửa sổ giao diện thì các bạn làm các bước như sau:

Bước 1: Trên thanh menu các bạn vào Tools => sau đó vào Nuget Package Manager => tiếp theo các bạn chọn Manage Packages for Solution

Bước 2: Qua tab Browse tìm thư viện với tên OpenXML.

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 2
Cách 2: cài đặt thư viện OpenXML bằng cửa sổ giao diện

Bước 3: Chọn project và version Open XML mà bạn muốn cài đặt.

Bước 4: Chọn Install để Visual studio tự động cài đặt thư viện cho các bạn.

Sau khi cài đặt bằng 1 trong 2 cách trên xong các bạn sẽ thấy trong project của mình có thư viện OpenXML như sau.

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 3
Các bạn để ý sẽ thấy trong packages thì thư viện Open XML version 2.10.1 đã được cài đặt

Hướng dẫn đọc file Excel bằng thư viện Open XML qua ví dụ

Bước 1: Tạo Project

Ở đây mình sẽ tạo nhanh 1 website sử dụng ASP.NET Core nhằm mục đích demo cho việc đọc file Excel nhé.

Các bước tạo là vô cùng đơn giản.

Mở Visual Studio

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 4
Mở Visual Studio để tạo project demo

Chọn Create a new project

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 5
Chọn loại dự án demo

Tiếp theo chọn dự án web ASP.NET Core

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 6
Chọn dự án demo là ASP.NET Core Web Application

Nhấn Next

Project name: Tên project

Location: Vị trí lưu project

Solution name: Tên Solution cho dự án

Nhấn Create 

Tiếp theo chọn mẫu template cho dự án web của bạn

Mình chọn Web Application (Model-View_controller)

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 7

Sau khi nhấn Create thì Visual Studio sẽ tự genarate cho cho chúng ta 1 website cơ bản. Project của chúng ta vừa tạo sẽ như này.

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 8

Chạy thử ứng dụng 

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 9

Mình sẽ đọc file Excel và hiển thị dữ liệu của file Excel thay cho màn hình Welcome này nhé.

OK. Cấu trúc của file Excel sẽ đơn giản như dưới đây.

Bước 2: Thêm thư viện Open XML vào dự án.

Phần này mình đã hướng dẫn phía bên trên, nếu chưa rõ các bạn hãy kéo lên để xem lại nhé.

Bước 3: Đọc file Excel bằng thư viện Open XML 

Ok bước quan trọng nhất đây rồi.

Đầu tiên các bạn phải lấy chính xác đường dẫn của file Excel mà mình muốn đọc. Đường dẫn file ở đây là bao gồm cả tên file nhé.

Ví dụ file Excel vừa rồi của mình

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 10
Cần lấy chính xác đường dẫn file Excel để OpenXML có thể thao tác vói file Excel đó

Code và chú thích

// Mở file Excel cần đọc dữ liệu
            using (SpreadsheetDocument doc = SpreadsheetDocument.Open(pathName, false))
            {
                //Lấy Sheet đầu tiên của file Excel
                Sheet sheet = doc.WorkbookPart.Workbook.Sheets.GetFirstChild<Sheet>();
                //Tạo Worksheet instance để thao tác dữ liệu
                Worksheet worksheet = (doc.WorkbookPart.GetPartById(sheet.Id.Value) as WorksheetPart).Worksheet;
                //Lấy dữ liệu tất cả các dòng trong sheet Excel được chọn
                IEnumerable<Row> rows = worksheet.GetFirstChild<SheetData>().Descendants<Row>();
                // Tạo số cột tương ứng với số cột trong bảng dữ liệu Excel
                foreach (Cell cell in rows.ElementAt(5))
                {
                    dt.Columns.Add(GetValueInCell(doc, cell));
                }
                // Vòng lặp qua các dòng dữ liệu Excel và thêm chúng vào 1 data table
                foreach (Row row in rows)
                {
                    DataRow dataRow = dt.NewRow();
                    for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
                    {
                        dataRow[i] = GetValueInCell(doc, row.Descendants<Cell>().ElementAt(i));
                    }

                    dt.Rows.Add(dataRow);
                }
            }

Bạn cần 1 phương thức lấy dữ liệu Cell

private string GetValueInCell(SpreadsheetDocument doc, Cell cell)
        {
            string value = string.Empty;
            if (cell.CellValue != null)
            {
                value = cell.CellValue.InnerText;
                if (cell.DataType != null && cell.DataType.Value == CellValues.SharedString)
                {
                    return doc.WorkbookPart.SharedStringTablePart.SharedStringTable.ChildElements.GetItem(int.Parse(value)).InnerText;
                }
            }
            return value;
        }

Như vậy là bạn đã có thể đọc dữ liệu cho 1 file Excel bằng OpenXML rồi. Cùng thưởng thức kết quả của chúng ta nào.

Hướng dẫn đọc file Excel sử dụng thư viện Open XML bằng C# 11
Kết quả: đọc file Excel và hiển thị dữ liệu lên trang web

Kết luận

Như vậy bạn có thể thấy việc đọc data từ file Excel bằng thư viện Open XML là khá đơn giản phải không các bạn. Open XML đã giúp các nhà phát triển giải quyết được nhiều vấn đề khi Excel ngày càng mạnh mẽ và trở thành 1 trong những công cụ lưu trữ data chính của nhiều cá nhân tập thể.

Bài viết hy vọng sẽ giúp bạn giải quyết được khó khăn trong việc đọc file Excel.

Mã nguồn mình đã upload lên Githup, các bạn có thể lấy về theo đường dẫn dưới đây.
Read_Excel_OpenXML

Giới thiệu ChickenIT 11 bài viết
Chào các bạn, mình là ChickenIT (gà IT). Sở thích của mình là máy tính, viết lách và lang thang trên mạng. Blog này là nơi mình chia sẻ những sở thích bên cạnh những kiến thức, kinh nghiệm của bản thân. Hy vọng sẽ giúp ích được cho các bạn.

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*