• (gridcontrol等)通用导出excel z


    关于DevExpress Winform 的所有可打印控件的导出excel 的通用方法,并且解决DevExpress控件自带的方法存在的缺陷问题
    1、解决GridControl自带方法不能导出图片;
    2、GridControl 的BandGridView 多表头无法导出等问题;
    3、解决PivotGridControl导出时候自动分组的问题;
    4、支持多个控件一同导出同一个excel 等等

    调用该方法真正做到控件的所见所得的导出功能。

    /// <summary>
            /// DevExpress通用导出Excel,支持多个控件同时导出在同一个Sheet表
            /// eg:ExportToXlsx("",gridControl1,gridControl2);
            /// 将gridControl1和gridControl2的数据一同导出到同一张工作表
            /// </summary>
            /// <param name="title">文件名</param>
            /// <param name="panels">控件集</param>
            public void ExportToExcel(string title, params IPrintable[] panels)
            {
                SaveFileDialog saveFileDialog = new SaveFileDialog();
                saveFileDialog.FileName = title;
                saveFileDialog.Title = "导出Excel";
                saveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls";
                DialogResult dialogResult = saveFileDialog.ShowDialog();
                if (dialogResult == DialogResult.Cancel)
                    return;
                string FileName = saveFileDialog.FileName;
                PrintingSystem ps = new PrintingSystem();
                CompositeLink link = new CompositeLink(ps);
                ps.Links.Add(link);
                foreach (IPrintable panel in panels)
                {
                    link.Links.Add(CreatePrintableLink(panel));
                }
                link.Landscape = true;//横向           
                //判断是否有标题,有则设置         
                //link.CreateDocument(); //建立文档
                try
                {
                    int count = 1;
                    //在重复名称后加(序号)
                    while (File.Exists(FileName))
                    {
                        if (FileName.Contains(")."))
                        {
                            int start = FileName.LastIndexOf("(");
                            int end = FileName.LastIndexOf(").") - FileName.LastIndexOf("(") + 2;
                            FileName = FileName.Replace(FileName.Substring(start, end), string.Format("({0}).", count));
                        }
                        else
                        {
                            FileName = FileName.Replace(".", string.Format("({0}).", count));
                        }
                        count++;
                    }
                    if (FileName.LastIndexOf(".xlsx") >= FileName.Length - 5)
                    {
                        XlsxExportOptions options = new XlsxExportOptions();
                        link.ExportToXlsx(FileName, options);
                    }
                    else
                    {
                        XlsExportOptions options = new XlsExportOptions();
                        link.ExportToXls(FileName, options);
                    }
                    if (DevExpress.XtraEditors.XtraMessageBox.Show("保存成功,是否打开文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                        System.Diagnostics.Process.Start(FileName);//打开指定路径下的文件
                }
                catch (Exception ex)
                {
                    DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message);
                }
            }
            /// <summary>
            /// 创建打印Componet
            /// </summary>
            /// <param name="printable"></param>
            /// <returns></returns>
            PrintableComponentLink CreatePrintableLink(IPrintable printable)
            {
                ChartControl chart = printable as ChartControl;
                if (chart != null)
                    chart.OptionsPrint.SizeMode = DevExpress.XtraCharts.Printing.PrintSizeMode.Stretch;
                PrintableComponentLink printableLink = new PrintableComponentLink() { Component = printable };
                return printableLink;
            }
    
  • 相关阅读:
    国防科学技术大学第忘记叫啥杯了
    2015 湘潭大学程序设计比赛(Internet)--D题-最小的数 2015-05-13 20:55 51人阅读 评论(0) 收藏
    ACM的探索之Everything is Generated In Equal Probability! 后序补充丫!
    线段树进阶之模板观见
    《地狱是上帝不在的地方》
    《E=MC2或一个思想的故事》
    画图软件gliffy
    线段树进阶之递归实现
    party lamps(dfs优化+规律枚举)
    滑雪(dfs+dp)
  • 原文地址:https://www.cnblogs.com/zeroone/p/5954442.html
Copyright © 2020-2023  润新知