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);
//
}