DevExpress XtraGrid GridControl를 엑셀 형식의 파일로 Export 하거나 PDF, DOC, Html 등 다양한 파일 형식으로 Export 해서 사용하는 경우가 많이 있습니다.
특히 Excel 파일로 Export 하는 것은 XtraGrid Control을 사용함에 있어 기본적으로 구현해 줘야 할 로직 입니다.
Excel로 Export 할 때 다양한 Properties(속성)를 사용하여 Option을 정의할 수 있습니다.
Sorting와 Filtering을 할 것인지?
엑셀의 격자선(눈금선, 테두리선)을 어떻게 보여 줄 것인지?
기본 글꼴과 글꼴 사이즈를 어떻게 지정해 줄 것인지? 등 많은 속성을 지정해서 Export 할 수 있습니다.
이번 글에서는 DevExpress XtraGrid Control Export할 때 다양한 속성 정의 방법에 대해 예제를 통해 알아보겠습니다.
DevExpress XtraGrid Export의 간단한 예제 – 엑셀(xlsx)로 Export
▼ 아래 예제는 XtraGrid GridControl을 엑셀의 Xlsx 파일 형식으로 Export 하는 예제입니다.
// Export 버튼 클릭 이벤트 private void btnExport_Click(object sender, EventArgs e) { // 저장할 파일 지정 string fileName = ShowSaveFileDialog(); if (fileName == string.Empty) return; // Export (xlsx로 익스포트 예제) ExportToEx(fileName, “xlsx”, grid1); // grid1 : GridView Name // 저장한 엑셀파일을 바로 열기 OpenFile(fileName); } // 저장할 파일 지정 메서드 private string ShowSaveFileDialog() { SaveFileDialog dlg = new SaveFileDialog(); dlg.Title = “Export To Excel Document”; dlg.FileName = “grid1저장”; // 파일명 dlg.Filter = “Excel Files|*.xlsx”; if (dlg.ShowDialog() == DialogResult.OK) return dlg.FileName; return “”; } // 실제 Export 하는 메서드 private void ExportToEx(String filename, string ext, DevExpress.XtraGrid.Views.Grid.GridView exportView) { Cursor currentCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; if (ext == “rtf”) exportView.ExportToRtf(filename); if (ext == “pdf”) exportView.ExportToPdf(filename); if (ext == “mht”) exportView.ExportToMht(filename); if (ext == “htm”) exportView.ExportToHtml(filename); if (ext == “txt”) exportView.ExportToText(filename); if (ext == “xls”) exportView.ExportToXls(filename); if (ext == “xlsx”) { DevExpress.XtraPrinting.XlsxExportOptionsEx xlOptions = new DevExpress.XtraPrinting.XlsxExportOptionsEx(); xlOptions.ShowGridLines = true; xlOptions.ExportType = DevExpress.Export.ExportType.WYSIWYG; //Gridview 보이는 그대로 저장되도록(자동필터 안함) xlOptions.AllowSortingAndFiltering = DevExpress.Utils.DefaultBoolean.False; xlOptions.CustomizeCell += Op_CustomizeCell; // 글꼴, 폰트크기 등 사용자 정의 추가 exportView.OptionsPrint.AutoWidth = false; exportView.ExportToXlsx(filename, xlOptions); } Cursor.Current = currentCursor; } // 글꼴과 폰트 사이즈 정의 private static void Op_CustomizeCell(DevExpress.Export.CustomizeCellEventArgs e) { System.Drawing.Font ExcelFont = new System.Drawing.Font(“Tahoma”, float.Parse(“10”)); e.Formatting.Font.Name = ExcelFont.Name; e.Formatting.Font.Size = ExcelFont.Size; e.Handled = true; } // 저장할 파일 private void OpenFile(string fileName) { if (MessageBox.Show(“저장 파일을 열어보시겠습니까?”, “Export To…”, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo.FileName = fileName; process.StartInfo.Verb = “Open”; process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal; process.Start(); } catch { DevExpress.XtraEditors.XtraMessageBox.Show(this, “파일열기 실패.”, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } } |
옵션을 정의하는 부분은 DevExpress.XtraPrinting.XlsxExportOptionsEx xlOptions = new DevExpress.XtraPrinting.XlsxExportOptionsEx();
이 부분 입니다.
만약 엑셀 형식이 xlsx가 아니라 xls 파일이라면 DevExpress.XtraPrinting.XlsExportOptionsEx xlOptions = new DevExpress.XtraPrinting.XlsExportOptionsEx();
이렇게 정의하면 됩니다.
XtraGrid에서 많이 사용하는 Export Option에 대한 설명
ExportMode : 단일 xlsx 파일 또는 여러 파일로 내보낼지 여부와 각 페이지를 별도의 워크 시트로 내보낼지 여부를 설정
ExportType : Export Type을 설정 (WYSIWYG or Data Aware)
- DevExpress.Export.ExportType.WYSIWYG : GirdView 보이는 상태 그대로(다양한 속성을 설정할 수 없음)
- DevExpress.Export.ExportType.Default : Data Aware(데이터 인식 내보내기)
AllowSotringAndFiltering : 열(Column’s)의 정렬 및 필터링 기능을 설정
- ExportType이 Default인 경우에 설정 적용.
AllowFixedColumns : Grid 컨트롤에서 활성화된 열 고정을 엑셀에서도 그대로 열 고정이 되도록 설정
- ExportType이 Default인 경우에 설정 적용.
AllowLookupValues : 콤보박스 및 조회 값을 내보낼지 여부 설정
- ExportType이 Default인 경우에 설정 적용.
CustomizeCell : Alignment, BackColor, Border, Font, FormatString 등의 사용자 정의 설정을 추가
SheetName : 엑셀파일의 워크 시트 이름을 설정
ShowGridLines : 엑셀 파일의 워크 시트 눈금선(격자선)을 표시할지 여부를 설정
XtraGrid Control을 엑셀로 Export 결과 및 참고 사이트

▶ 아래 사이트 링크에서 XlsxExportOtionsEx의 더 많은 Properties를 확인할 수 있습니다.
https://docs.devexpress.com/CoreLibraries/DevExpress.XtraPrinting.XlsxExportOptionsEx._properties
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^