Dưới đây mình sẽ giới thiệu các bạn một trong những cách xuất file excel trong C# sử dụng bằng netoffice.

  • Đầu tiên là Microsoft Excel (tối thiểu là 2003).
  • Thư viện NetOffice trong Nuget Packages.
  • Ta tạo 1 project C#, ở đây mình tạo Console application.

  • Chọn chuột phải vào reference, chọn Manage Nuget Packages. Ở khung search, ta tìm từ khóa “NetOffice”. Sau khi kết quả hiện ra, chọn NetOffice.Excel và Install nó.

  • Ta tạo 1 class tên là ExportExcelHelper (hoặc là gì cũng được để gọi sau này cho dễ). Nhớ là ở ta cần phải using Excel = NetOffice.ExcelApi;
  • Ở bài này, mình sẽ ví dự làm báo cáo điểm cho các học sinh. Cụ thể sẽ chú thích ở code cho dễ hiểu.
 // Tạp class student gồm các thuộc tính public class Student { public string Code { get; set; } public string Name { get; set; } public string Address { get; set; } public DateTime DOB { get; set; } public float Mark_Math { get; set; } public float Mark_Lit { get; set; } public float Mark_Physic { get; set; } } public class ExportExcelHelper { private Excel.Application excelApp; private string ExcelFilePath; private string[] sheetName; // constructor này để khởi tạo file vào đường dẫn, các sheet trong file excel // dùng như vậy sẽ tận dụng được code nếu muốn xuất thêm các file excel định dạng khác public ExportExcelHelper(string ExcelFilePath, string[] sheetName) { try { excelApp = new Excel.Application(); this.ExcelFilePath = ExcelFilePath; this.sheetName = sheetName; //tạo các sheet trong file excel excelApp.Workbooks.Add(); int sheetCount = sheetName.Count() - excelApp.Worksheets.Count; for (int i = 0; i < sheetCount; i++) { excelApp.Worksheets.Add(); } for (int i = 0; i < sheetName.Count(); i++) { Excel.Worksheet ws = (Excel.Worksheet)excelApp.Worksheets[i + 1]; ws.Name = sheetName[i]; } } catch (Exception) { if (excelApp != null) { Close(excelApp); } } } private void Close(Excel.Application excelApp) { excelApp.ActiveWorkbook.Close(); excelApp.Quit(); excelApp.Dispose(); } public void AddSheetContent(string workSheetName, List<Student> studentList) { // lấy sheet của file excel bằng tên Excel.Worksheet workSheet = (Excel.Worksheet)excelApp.Worksheets[this.sheetName[0]]; // thêm các Title cho sheet, merge các ô từ A1 đến A7, in đậm, font size là 14 workSheet.Cells[1, 1].Value = "BẢNG ĐIỂM HỌC SINH"; workSheet.Range(workSheet.Cells[1, 1], workSheet.Cells[1, 7]).Merge(); workSheet.Range(workSheet.Cells[1, 1], workSheet.Cells[1, 7]).Font.Bold = true; workSheet.Range(workSheet.Cells[1, 1], workSheet.Cells[1, 7]).Font.Size = 14; // thêm header cho bảng workSheet.Cells[3, 1].Value = "Mã số"; workSheet.Cells[3, 2].Value = "Tên"; workSheet.Cells[3, 3].Value = "Địa chỉ"; workSheet.Cells[3, 4].Value = "Ngày sinh"; // merge các ô A3 A4, B3 B4, C3 C4 workSheet.Range(workSheet.Cells[3, 1], workSheet.Cells[4, 1]).Merge(); workSheet.Range(workSheet.Cells[3, 2], workSheet.Cells[4, 2]).Merge(); workSheet.Range(workSheet.Cells[3, 3], workSheet.Cells[4, 3]).Merge(); workSheet.Range(workSheet.Cells[3, 4], workSheet.Cells[4, 4]).Merge(); workSheet.Cells[3, 5].Value = "Điểm"; workSheet.Range(workSheet.Cells[3, 5], workSheet.Cells[3, 7]).Merge(); workSheet.Cells[4, 5].Value = "Toán"; workSheet.Cells[4, 6].Value = "Văn"; workSheet.Cells[4, 7].Value = "Lý"; // format header var rangeHeader = workSheet.Range(workSheet.Cells[3, 1], workSheet.Cells[4, 7]); rangeHeader.Font.Bold = true; rangeHeader.Font.Size = 11; // format các border rangeHeader.Borders[XlBordersIndex.xlInsideVertical].LineStyle = XlLineStyle.xlContinuous; rangeHeader.Borders[XlBordersIndex.xlInsideVertical].Weight = XlBorderWeight.xlThin; rangeHeader.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = XlLineStyle.xlContinuous; rangeHeader.Borders[XlBordersIndex.xlInsideHorizontal].Weight = XlBorderWeight.xlThin; // canh giữa các đề mục, theo chiều ngang, dọc rangeHeader.HorizontalAlignment = XlHAlign.xlHAlignCenter; rangeHeader.VerticalAlignment = XlHAlign.xlHAlignCenter; // điền thông tin học sinh for (var i = 0; i < studentList.Count; i++) { // xác định dòng ở mỗi lần loop var row = i + 5; workSheet.Cells[row, 1].Value = studentList[i].Code; workSheet.Cells[row, 2].Value = studentList[i].Name; workSheet.Cells[row, 3].Value = studentList[i].Address; workSheet.Cells[row, 4].Value = studentList[i].DOB.ToShortDateString(); workSheet.Cells[row, 5].Value = studentList[i].Mark_Math; workSheet.Cells[row, 6].Value = studentList[i].Mark_Lit; workSheet.Cells[row, 7].Value = studentList[i].Mark_Physic; } //format dòng cột lại var lastRow = 5 + studentList.Count; var contentRange = workSheet.Range(workSheet.Cells[5, 1], workSheet.Cells[lastRow, 7]); workSheet.Range(workSheet.Cells[3, 1], workSheet.Cells[lastRow, 7]).BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic); contentRange.Borders[XlBordersIndex.xlInsideVertical].LineStyle = XlLineStyle.xlContinuous; contentRange.Borders[XlBordersIndex.xlInsideVertical].Weight = XlBorderWeight.xlThin; contentRange.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle = XlLineStyle.xlContinuous; contentRange.Borders[XlBordersIndex.xlInsideHorizontal].Weight = XlBorderWeight.xlHairline; //tự động canh độ rộng các cột workSheet.Columns.AutoFit(); //lưu file lại SaveFile(); } //luu file public bool SaveFile() { if (ExcelFilePath != null && ExcelFilePath.Trim().Length > 0) { try { excelApp.ActiveWorkbook.SaveAs(ExcelFilePath, XlFileFormat.xlExcel8); Close(excelApp); return true; //success } catch (Exception) { Close(excelApp); return false; } } return false; } } 

Sau đó gọi hàm trong main

 class Program { static void Main(string[] args) { string[] sheetName = { "bảng điểm kì 1" }; List<Student> listStudent = new List<Student>(); listStudent.Add(new Student { Code = "SE01", Name = "LinhNV", Address ="Ho Chi Minh", DOB = DateTime.Now, //ví dụ thôi 😀 Mark_Math = (new Random()).Next(0, 10), Mark_Lit = (new Random()).Next(0, 10), Mark_Physic = (new Random()).Next(0, 10), }); listStudent.Add(new Student { Code = "SE02", Name = "HoangDN", Address ="Ho Chi Minh", DOB = DateTime.Now, //ví dụ thôi 😀 Mark_Math = (new Random()).Next(0, 10), Mark_Lit = (new Random()).Next(0, 10), Mark_Physic = (new Random()).Next(0, 10), }); ExportExcelHelper helper = new ExportExcelHelper("C:/", sheetName); helper.AddSheetContent(sheetName[0], listStudent); } } 

Kết qua:

Đây là demo mình đã làm, các bạn tham khảo:

http://2click.us/d-06851b89

Post Views: 704

Share this:

Related

ĐỂ LẠI PHẢN HỒI CỦA BẠN TẠI ĐÂY

Phản hồi về bài viết này

NO COMMENTS

LEAVE A REPLY


*