彩票走势图

「干货」DevExpress Winform 的所有可打印控件的导出excel 的可行办法

转帖|使用教程|编辑:龚雪|2016-12-09 11:49:08.000|阅读 1322 次

概述:本文章主要是讲述将DevExpress Winform 的所有可打印控件的导出excel 的可行方法,并且还能解决DevExpress控件本身自带的一些问题,具体能够解决以下几个问题: 1)GridControl 的BandGridView 多表头无法导出; 2)GridControl自带方法无法导出图片; 3)支持多个控件一同导出同一个excel; 4)PivotGridControl导出时候自动分组。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>


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

        }

慧都学院2017全新DevExpress线下研修班火热报名中!



标签:DevExpress

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:CSDN

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP