在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)
作者:作者不详  发布日期:2021-07-04 23:58:01
  在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)

在基类窗体扩展一个通用导出Excel文件的按钮(支持导出所有表格的数据到Xlsx文件)


在基类窗体扩展一个通用导出Excel文件的按钮,支持导出当前窗体所有表格的数据到Xlsx文件。
在【数据查询】页面,默认导出主表的数据,在【数据编辑】页面,导出所有明细的表格的数据。


效果:


贴图图片-基类窗体扩展导出Excel文件按钮



解决方案:


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



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




3. 导出明细页面的数据(模板方法)


C# Code:


/// <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




C/S框架网|csframework.com|新手指南







C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇