DevExpress XtraGrid Control Export할 때 다양한 속성 정의


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 결과 및 참고 사이트

DevExpress XtraGrid Control Export할 때 다양한 속성 정의

▶ 아래 사이트 링크에서 XlsxExportOtionsEx의 더 많은 Properties를 확인할 수 있습니다.
https://docs.devexpress.com/CoreLibraries/DevExpress.XtraPrinting.XlsxExportOptionsEx._properties





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기