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
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^