Đối với C#, để xử lý file Excel (.xls, .xlsx) ta có rất nhiều thư viện khác nhau để thực hiện, một trong những thư viện miễn phí và mạnh mẽ đó là NPOI.

Bài viết này hướng đến đối tượng là lập trình C# trên Visual Studio

Bài viết này hướng dẫn cách xử lý file Excel ở mức cơ bản

Cài đặt NPOI

Có nhiều cách để cài đặt NPOI vào dự án của bạn:

+ Cài từ NuGet thông qua Package Manager Console với câu lệnh:

Install-Package NPOI

+ Cài từ Nuget thông qua Manager NuGet Packages:

Sơ lược về NPOI

Để thực hiện việc đọc và ghi file Excel thì ta cần quan tâm đến 2 class HSSFWorkbookXSSFWorkbook:

  • HSSFWorkbook: Dùng để xử lý file Excel có định dạng .xls
  • XSSFWorkbook: Dùng để xử lý file Excel có định dạng .xlsx

Chuẩn bị

Để thực hiện, mình sẽ chuẩn bị 1 file Excel có nội dung như sau:

Dữ liệu mẫu

Tất cả các ví dụ về đọc và ghi file mình sẽ dùng bằng class XSSFWorkbook cho việc xử lý file XLSX.

Các xử lý cơ bản

Khởi tạo
FileStream fileStream = new FileStream(@"...\..\File\Example.xlsx", FileMode.Open);
XSSFWorkbook wb = new XSSFWorkbook(fileStream);
Lấy Sheet
//Lấy sheet bằng index của sheet
ISheet sheet1 = wb.GetSheetAt(index: 0);

//Lấy sheet bằng tên sheet
ISheet sheet2 = wb.GetSheet(name: "Sheet1");
Lấy số hàng có dữ liệu của Sheet
int rowNumber = sheet1.PhysicalNumberOfRows;
Lấy index của hàng có dữ liệu cuối cùng
int lastRowNum = sheet1.LastRowNum;
Lấy tên của Sheet
string name = sheet1.SheetName;
Lấy 1 hàng bất kỳ trong Sheet
IRow row = sheet1.GetRow(rownum: 1);
Lấy 1 ô bất kỳ của 1 hàng bất kỳ
ICell cell = row.GetCell(cellnum: 0);
Lấy kiểu dữ liệu của 1 ô
CellType cellType = cell.CellType;
string strCellType = cellType.ToString();

Ví dụ: Đối với file Excel mà mình đã chuẩn bị ở trên, thì đối với hàng 1 thì tất cả các ô sẽ có kiểu là String, đối với hàng 2, cột 1 sẽ là kiểu Numeric và cột 2 sẽ là kiểu String

Lấy giá trị của 1 ô
object value = null;
if (cell.CellType.ToString() == "Numeric")
  value = cell.NumericCellValue;
else
  value = cell.StringCellValue;

Bài viết này sẽ kết thúc tại đây, mình sẽ tiếp tục trong 1 bài viết khác. Cảm ơn bạn đã xem, hãy để lại bình luận góp ý để mình hoàn thiện hơn.