在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
扫一扫加作者微信
在基类窗体扩展一个通用导出Excel文件的按钮,支持导出当前窗体所有表格的数据到Xlsx文件。
在【数据查询】页面,默认导出主表的数据,在【数据编辑】页面,导出所有明细的表格的数据。
效果:
解决方案:
1. 重写InitButtons方法
C# Code:
/// <summary>
/// 初始化数据窗体的按钮
/// </summary>
public override void InitButtons()
{
base.InitButtons();
//扩展一个按钮
if (this.ButtonAuthorized(ButtonAuthority.EXPORT))
this.Buttons.AddButton(this.ToolbarRegister.CreateButton("btnExportXls", LanLib.Get("导出Excel"), ToolBarGroup.数据操作, Globals.LoadBitmap("export.ico"), new Size(57, 28), false, true, this.DoExportXls));
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 初始化数据窗体的按钮
/// </summary>
public override void InitButtons()
{
base.InitButtons();
//扩展一个按钮
if (this.ButtonAuthorized(ButtonAuthority.EXPORT))
this.Buttons.AddButton(this.ToolbarRegister.CreateButton("btnExportXls", LanLib.Get("导出Excel"), ToolBarGroup.数据操作, Globals.LoadBitmap("export.ico"), new Size(57, 28), false, true, this.DoExportXls));
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
2. 按钮事件
C# Code:
/// <summary>
/// 导出Excel通用按钮事件
/// </summary>
/// <param name="sender"></param>
public virtual void DoExportXls(IButtonInfo sender)
{
if (tcBusiness.SelectedTabPage == tpSummary && _SummaryView != null)
{
if (_SummaryView.View is GridView)
{
//导出主表
DoExportXlsx(_SummaryView.View as GridView);
}
}
else
{
DoExportDetailXlsx();//导出所有明细
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 导出Excel通用按钮事件
/// </summary>
/// <param name="sender"></param>
public virtual void DoExportXls(IButtonInfo sender)
{
if (tcBusiness.SelectedTabPage == tpSummary && _SummaryView != null)
{
if (_SummaryView.View is GridView)
{
//导出主表
DoExportXlsx(_SummaryView.View as GridView);
}
}
else
{
DoExportDetailXlsx();//导出所有明细
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
3. 导出明细页面的数据(模板方法)
C# Code:
/// <summary>
/// 导出明细表的Excel
/// </summary>
public virtual void DoExportDetailXlsx()
{
throw new NotImplementedException(LanLib.Get("导出明细表的Excel未实现!"));
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 导出明细表的Excel
/// </summary>
public virtual void DoExportDetailXlsx()
{
throw new NotImplementedException(LanLib.Get("导出明细表的Excel未实现!"));
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
注意:有明细表的界面,必须重写DoExportDetailXlsx方法!
4. 导出表格数据到Excel的通用方法,支持导出多个表格。
C# Code:
/// <summary>
/// 导出表格的Excel通用方法
/// </summary>
/// <param name="views"></param>
protected void DoExportXlsx(params GridView[] views)
{
try
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Microsoft Excel Files|*.xlsx";
if (dlg.ShowDialog() == DialogResult.OK)
{
foreach (var view in views)
{
if (views.Length > 0)
view.ExportToXlsx(dlg.FileName.Substring(0, dlg.FileName.Length - 5) + "_" + view.Name + ".xlsx");
else
view.ExportToXlsx(dlg.FileName);
}
Msg.ShowInformation(LanLib.Get("导出文件成功!"));
}
}
catch
{
Msg.ShowInformation(LanLib.Get("导出文件失败成功!"));
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 导出表格的Excel通用方法
/// </summary>
/// <param name="views"></param>
protected void DoExportXlsx(params GridView[] views)
{
try
{
SaveFileDialog dlg = new SaveFileDialog();
dlg.Filter = "Microsoft Excel Files|*.xlsx";
if (dlg.ShowDialog() == DialogResult.OK)
{
foreach (var view in views)
{
if (views.Length > 0)
view.ExportToXlsx(dlg.FileName.Substring(0, dlg.FileName.Length - 5) + "_" + view.Name + ".xlsx");
else
view.ExportToXlsx(dlg.FileName);
}
Msg.ShowInformation(LanLib.Get("导出文件成功!"));
}
}
catch
{
Msg.ShowInformation(LanLib.Get("导出文件失败成功!"));
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
扫一扫加作者微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网