Có thể bạn quan tâm: Cách Xóa Khoảng Trống Thừa Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
1. Giới thiệu chung về DevExpress GridView và nhu cầu export sang Excel
DevExpress là một trong những bộ thư viện UI phổ biến nhất cho nền tảng .NET, đặc biệt là trong việc xây dựng các ứng dụng doanh nghiệp. Một trong những thành phần quan trọng nhất của DevExpress là GridView, một control mạnh mẽ cho phép hiển thị dữ liệu dạng bảng với các tính năng như sắp xếp, lọc, nhóm, và tùy chỉnh giao diện. Khi làm việc với dữ liệu lớn, người dùng thường muốn xuất dữ liệu ra file Excel để phân tích thêm, báo cáo hoặc lưu trữ.
Export sang Excel trong DevExpress có thể được thực hiện qua nhiều cách khác nhau: sử dụng built‑in export methods, tùy chỉnh dữ liệu xuất, hoặc khai thác tính năng Export to PDF/HTML để chuyển đổi. Dưới đây, chúng ta sẽ đi sâu vào các phương pháp thực tế, cung cấp ví dụ mã nguồn chi tiết và giải quyết các vấn đề thường gặp như định dạng, hỗ trợ nhiều sheet, và xuất dữ liệu lớn.
Có thể bạn quan tâm: Xóa Nhiều Sheet Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
2. Kiến thức cơ bản: Các kiểu dữ liệu xuất và cấu trúc file Excel
Trước khi bắt đầu viết mã, ta cần hiểu:
– Excel file format: Excel hỗ trợ hai định dạng chính là .xls (BIFF) và .xlsx (Open XML). DevExpress hỗ trợ cả hai, nhưng .xlsx là lựa chọn hiện đại vì khả năng mở rộng, tốc độ và tính tương thích cao.
– Data type mapping: Khi xuất, dữ liệu kiểu số, ngày tháng, chuỗi, boolean sẽ được ánh xạ vào các kiểu Excel tương ứng. Cần chú ý đặc biệt với kiểu DateTime để tránh lỗi định dạng ngày tháng không đúng.
– Formatting: Bạn có thể áp dụng định dạng font, màu nền, căn lề, và điều kiện cho từng cột trong file Excel. DevExpress cung cấp API để thực hiện điều này một cách linh hoạt.
Có thể bạn quan tâm: Xóa Dòng Trống Trong Excel: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
3. Chuẩn bị môi trường và cài đặt DevExpress
3.1. Cài đặt DevExpress qua NuGet
Install-Package DevExpress.Win
Hoặc nếu bạn đang dùng ASP.NET MVC/WebForms, cài đặt các gói tương ứng:
Install-Package DevExpress.Web.ASPxGridView
3.2. Thêm namespace cần thiết
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.Export;
using DevExpress.XtraPrinting;
4. Phương pháp 1: Export trực tiếp từ GridView sang file Excel
4.1. Đối với WinForms/XtraGrid
// Giả sử gridView1 là GridView của XtraGrid
private void ExportGridToExcel()
{ string filePath = @"C:\Temp\Export.xlsx"; // Export to Excel 2007+ (.xlsx) gridView1.ExportToXlsx(filePath, new XlsxExportOptionsEx() { ExportType = ExportType.WYSIWYG, TextExportMode = TextExportMode.Text, // hoặc ExportMode SheetName = "Dữ liệu", // Tùy chọn thêm ExportColumnHeaders = true, ExportGroupPanel = true }); MessageBox.Show($"File đã được lưu tại {filePath}");
}
Giải thích tham số:
- ExportType:
WYSIWYGgiữ nguyên cách hiển thị trong GridView, cònDatachỉ xuất dữ liệu thô. - TextExportMode: Đặt
Textđể tránh export HTML trong cột chứa RichText. - SheetName: Tên sheet trong workbook.
4.2. Đối với ASP.NET MVC/WebForms
ASP.NET MVC (ASP.NET Core):
public IActionResult ExportExcel()
{ var grid = new GridView(); grid.DataSource = GetData(); // lấy dữ liệu grid.DataBind(); using (var ms = new MemoryStream()) { grid.SaveToXls(ms); ms.Position = 0; return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Export.xlsx"); }
}
ASP.NET WebForms:
protected void ExportToExcel_Click(object sender, EventArgs e)
{ ASPxGridView1.ExportToExcel("Export.xlsx");
}
5. Tùy chỉnh dữ liệu xuất: Lọc, sắp xếp và nhóm
Đôi khi, bạn không muốn xuất toàn bộ dữ liệu hiển thị trong GridView mà chỉ muốn lấy một phần. Để làm được điều này, bạn có thể:

Có thể bạn quan tâm: Excel Pick From Drop‑down List: Hướng Dẫn Chi Tiết Từ Cơ Bản Đến Nâng Cao
Sử dụng
FilterString:csharp gridView1.ActiveFilterString = "ColumnName > 100";Tạo DataSource mới:
csharp var data = GetData().Where(d => d.Value > 100).ToList(); gridView1.DataSource = data; gridView1.DataBind();Xuất dữ liệu nhóm:
csharp gridView1.OptionsView.ShowGroupedColumns = true; gridView1.ExportToXlsx(filePath, new XlsxExportOptionsEx() { ExportType = ExportType.Data, ExportGroupPanel = true });
6. Export nhiều sheet và xử lý dữ liệu lớn
6.1. Export nhiều sheet
DevExpress cho phép tạo nhiều sheet trong một workbook. Bạn có thể dùng XlsxExportOptionsEx và gọi ExportToXlsx nhiều lần với SheetName khác nhau.
var options = new XlsxExportOptionsEx()
{ ExportType = ExportType.WYSIWYG
}; gridView1.ExportToXlsx(@"C:\Temp\MultiSheet.xlsx", options);
gridView2.ExportToXlsx(@"C:\Temp\MultiSheet.xlsx", options, "Sheet2");
6.2. Xử lý dữ liệu lớn (thousands rows)
Khi xuất dữ liệu lớn, việc ghi file có thể chậm. DevExpress hỗ trợ stream export:
private void ExportLargeData()
{ using (var ms = new MemoryStream()) { gridView1.ExportToXlsx(ms, new XlsxExportOptionsEx() { ExportType = ExportType.WYSIWYG, ExportMemoryStream = true }); ms.Position = 0; File.WriteAllBytes(@"C:\Temp\LargeExport.xlsx", ms.ToArray()); }
}
Ngoài ra, bạn có thể đặt ExportToXlsx trong background thread để tránh blocking UI.
7. Tùy chỉnh định dạng cell trong Excel
Bạn có thể áp dụng định dạng cho cột hoặc cell cụ thể bằng cách sử dụng XlsxExportOptionsEx và ExportTextMode.
var options = new XlsxExportOptionsEx()
{ ExportType = ExportType.WYSIWYG, ExportColumnHeaders = true, ExportGroupPanel = true
}; gridView1.ExportToXlsx(@"C:\Temp\FormattedExport.xlsx", options); // Sau khi file đã được tạo, bạn có thể mở nó để tweak thêm
Để áp dụng định dạng động, có thể dùng ColumnFormat:
gridView1.Columns"Amount".OptionsColumn.Format = FormatNumberStyle.Currency;
gridView1.Columns"Amount".OptionsColumn.Alignment = DevExpress.Utils.HorzAlignment.Far;
8. Export dữ liệu thô (raw data) để sử dụng trong các công cụ BI
Nếu mục tiêu chỉ là xuất dữ liệu nguyên thủy, bạn có thể dùng:
gridView1.ExportToCsv(@"C:\Temp\export.csv", new CsvExportOptionsEx { ExportType = ExportType.Data, ExportColumnHeaders = true });
Hoặc sử dụng Excel DataTable Export:
DataTable dt = (DataTable)gridView1.DataSource;
dt.WriteXml(@"C:\Temp\Data.xml");
9. Giải quyết các lỗi thường gặp
| Lỗi | Nguyên nhân | Giải pháp |
|---|---|---|
| Không xuất được file | Đường dẫn không tồn tại hoặc chưa có quyền ghi | Kiểm tra quyền file, tạo thư mục trước khi ghi |
| Dữ liệu bị cắt ngắn | Tham số ExportType sai, hoặc dữ liệu lớn vượt giới hạn | Sử dụng ExportType.WYSIWYG và tải dữ liệu vào bộ nhớ (MemoryStream) |
| Định dạng ngày tháng sai | Excel nhận định kiểu ngày tháng khác | Sử dụng ExportType.Data và thiết lập column format trước khi xuất |
| Bộ nhớ lớn | Đang xuất trực tiếp tới file khi dữ liệu = millions | Export to MemoryStream, sau đó ghi file ở cuối, hoặc export từng batch |
10. Tối ưu performance khi export
- Disable unnecessary options: Tắt
ExportGroupPanel,ExportColumnHeaderskhi không cần. - Use
ExportToXlsxwithXlsxExportOptionsEx.ExportType = ExportType.Data: Giảm tải render UI. - Export in background: Sử dụng
Task.Run(() => ExportGridToExcel());trong WinForms hoặcasync/awaittrong ASP.NET Core.
11. Các công cụ bổ trợ và thay thế
- DevExpress Chart Export: Nếu bạn muốn xuất biểu đồ dưới dạng hình ảnh vào Excel, có thể dùng
ChartControl.ExportToImage. - EPPlus: Nếu muốn tùy biến sâu hơn, bạn có thể xuất dữ liệu từ GridView sang DataTable, rồi dùng EPPlus tạo file Excel.
- OpenXML SDK: Cho những trường hợp cần thao tác file Excel ở mức độ thấp hơn.
12. Thực hành: Ví dụ hoàn chỉnh trên ASP.NET Core MVC
// Controller
public class ReportController : Controller
{ public async Task<IActionResult> ExportExcel() { var data = await _dbContext.Orders.ToListAsync(); var grid = new DevExpress.Web.ASPxGridView.ASPxGridView(); grid.DataSource = data; grid.DataBind(); using var ms = new MemoryStream(); grid.SaveToXls(ms); ms.Position = 0; return File(ms.ToArray(), "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Orders.xlsx"); }
}
<!-- View -->
<a asp-action="ExportExcel" class="btn btn-primary">Export to Excel</a>
13. Kết luận
Export GridView của DevExpress sang Excel là một tính năng quan trọng và được hỗ trợ mạnh mẽ. Bằng cách hiểu các tùy chọn, cấu hình định dạng, và xử lý dữ liệu lớn, bạn có thể tạo ra các báo cáo chuyên nghiệp, dễ dàng chia sẻ và phân tích. Mỗi dự án có những yêu cầu khác nhau – từ xuất dữ liệu đơn giản, xuất nhiều sheet, tới tùy chỉnh định dạng sâu. DevExpress cung cấp các công cụ linh hoạt để đáp ứng mọi nhu cầu, đồng thời tối ưu hiệu năng và trải nghiệm người dùng.
Bây giờ bạn đã có đủ kiến thức để triển khai, tùy chỉnh và xử lý export GridView sang Excel một cách chuyên nghiệp. Hãy thử áp dụng vào dự án của mình và chia sẻ trải nghiệm nhé!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
