develop

제목 포함 데브익스프레스 그리드 출력

파드파드 2018. 5. 24. 15:02
반응형

Devexpress XtraGrid 의 Excel Export 예제 입니다.

xtragird.ExportXls(); 을 이용 하면 그리드 데이타를 엑셀 파일에 간단히 출력 할 수 있습니다.

그런데

엑셀 파일에 제목, 출력일자 등을 추가 하고 싶을 때에는 PrintingSystem 클래스를 사용 해야 합니다.

단순히 헤더 혹은 풋터에 출력을 하고자 하면 2번 메소드는 필요가 없습니다.


1.

        private void ExportExcel_t2(DevExpress.XtraGrid.GridControl grid, string title)

        {

            SaveFileDialog fd = new SaveFileDialog();

            fd.Filter = "Excel 파일 (*.xls)|*.xls|Excel 파일 (*.xlsx)|*.xlsx";

            if (fd.ShowDialog() == DialogResult.OK)

            {

                bool isSuccess = false;

                try

                {

                    PrintingSystem printingSystem1 = new PrintingSystem();

                    PrintableComponentLink printableComponentLink1 = new PrintableComponentLink();


                    //printableComponentLink1.CreateReportHeaderArea += new CreateAreaEventHandler(printableComponentLink1_CreateReportHeaderArea);


                    printableComponentLink1.CreateReportHeaderArea += delegate(object o1, CreateAreaEventArgs e1)

                    {

                        printableComponentLink1_CreateReportHeaderArea(o1, e1, title);

                    };


                  

                    printableComponentLink1.PaperKind = System.Drawing.Printing.PaperKind.A4;


                    printableComponentLink1.Margins.Top = 1;

                    printableComponentLink1.Margins.Bottom = 1;

                    printableComponentLink1.Margins.Left = 1;

                    printableComponentLink1.Margins.Right = 1;


                    printableComponentLink1.Landscape = true;


                    ////page header begin : bricks 윗 라인에 형성 됨. 그닥...

                    //(printableComponentLink1.PageHeaderFooter as PageHeaderFooter).Header.LineAlignment = BrickAlignment.Far;

                    //(printableComponentLink1.PageHeaderFooter as PageHeaderFooter).Header.Font = new Font("Tahoma", 14);

                    //(printableComponentLink1.PageHeaderFooter as PageHeaderFooter).Header.Content.AddRange(new string[] { "", "[Page # of Pages #]", "[Date Printed]" });

                    ////end


                    printingSystem1.Links.AddRange(new object[] { printableComponentLink1 });

                    printableComponentLink1.Component = grid;


                    if (System.IO.Path.GetExtension(fd.FileName).ToUpper() == "XLSX")

                    {

                        XlsxExportOptionsEx options = new XlsxExportOptionsEx();

                        options.TextExportMode = DevExpress.XtraPrinting.TextExportMode.Value;


                        printableComponentLink1.ExportToXlsx(fd.FileName, options);

                    }

                    else

                    {

                        XlsExportOptions options = new XlsExportOptions();

                        options.TextExportMode = DevExpress.XtraPrinting.TextExportMode.Value;


                        printableComponentLink1.ExportToXls(fd.FileName, options);

                    }

                    isSuccess = true;

                }

                catch (Exception ex)

                {

                    MessageBox.Show(ex.Message);

                }


                if (isSuccess)

                {                    

                    System.Diagnostics.Process.Start(fd.FileName);                    

                }


            }

        }


2.

void printableComponentLink1_CreateReportHeaderArea(object sender, CreateAreaEventArgs e, string Title)

        {

            //title

            DevExpress.XtraPrinting.TextBrick brick;


            brick = e.Graph.DrawString(Title, Color.Black, new RectangleF(0, 0, 500, 40), DevExpress.XtraPrinting.BorderSide.None);


            brick.Font = new Font("Tahoma", 15);


            brick.StringFormat = new DevExpress.XtraPrinting.BrickStringFormat(StringAlignment.Near, StringAlignment.Center);


            float width = e.Graph.ClientPageSize.Width;


            //print date

            DevExpress.XtraPrinting.TextBrick brick2;

            brick2 = e.Graph.DrawString(DateTime.Now.ToString("yyyy-MM-dd"), Color.Black, new RectangleF(width-100, 0, 90, 40), DevExpress.XtraPrinting.BorderSide.None);

            brick2.Font = new Font("Tahoma", 10);

            brick2.StringFormat = new DevExpress.XtraPrinting.BrickStringFormat(StringAlignment.Center, StringAlignment.Far);


            

            //

        }

반응형