首页 > 其他分享 >Wpf和Winform使用devpress控件库导出Excel并调整报表样式

Wpf和Winform使用devpress控件库导出Excel并调整报表样式

时间:2024-07-18 11:29:42浏览次数:11  
标签:控件 devpress gdv DevExpress Excel FileName Pdf new Spire

Wpf和Winform使用devpress控件库导出Excel并调整报表样式

背景

客户需求经常需要出各种报表,部分客户对报表的样式有要求。包括颜色、字体、分页等等。

代码

使用Datagridview导出excel调整样式

DevExpress.XtraGrid.Views.Grid.GridView gdv
#region GridView属性设置
//行号所在列的宽度
gdv.IndicatorWidth = 40;
//顶部面板 可用于分组
gdv.OptionsView.ShowGroupPanel = false;
//显示底部面板 可用于展示统计
gdv.OptionsView.ShowFooter = true;
//奇数行的效果设置是否可用
gdv.OptionsView.EnableAppearanceEvenRow = true;
//失去焦点时 是否保留行选中效果
gdv.OptionsSelection.EnableAppearanceHideSelection = false;
//是否显示焦点单元格样式
gdv.OptionsSelection.EnableAppearanceFocusedCell = false;
//只读
gdv.OptionsBehavior.ReadOnly = true;
//不可编辑 若设置不可编辑 会导致表格中增加的按钮的单击事件不可用
gdv.OptionsBehavior.Editable = false;
//行选中
gdv.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
//边框
//gdv.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
//关闭列右键菜单
gdv.OptionsMenu.EnableColumnMenu = false;
//列字体对齐方式
gdv.Appearance.HeaderPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
//列字体设置
gdv.Appearance.HeaderPanel.Font = new System.Drawing.Font("微软雅黑", 14F, FontStyle.Bold, GraphicsUnit.Pixel);
//行字体对齐方式
gdv.Appearance.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
//奇数行背景色
gdv.Appearance.EvenRow.BackColor = Color.FromArgb(228, 243, 255);
//焦点行背景色
gdv.Appearance.FocusedRow.BackColor = Color.FromArgb(0, 153, 255);
//焦点行字体颜色
gdv.Appearance.FocusedRow.ForeColor = Color.White;
//FooterPanel字体对齐方式
gdv.Appearance.FooterPanel.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
//行字体
gdv.Appearance.Row.Font = new System.Drawing.Font("微软雅黑", 14F, FontStyle.Regular, GraphicsUnit.Pixel);
//导出相关设置
gdv.AppearancePrint.Row.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
gdv.OptionsPrint.AutoWidth = false;
gdv.AppearancePrint.Row.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;

使用Devpress导出gridview到PDF

        /// <summary>
        /// pdf导出
        /// </summary>
        private void ExportPdf2()
        {
            string startDate = dtpStartDate.Value.ToString("yyyyMMdd");
            string endDate = dtpEndDate.Value.ToString("yyyyMMdd");
            string FileName = "结算单_" + startDate + "_" + endDate;
            IPrintable[] Futuresprintables = { gcFundprofit, gcStockHold, gcFutureHold, gcFutureDone, gcDelivery, gcExercise };
            ExportToPdf2(FileName, true, "结算单", Futuresprintables);
        }

        /// <summary>
        /// 导出为pdf
        /// </summary>
        /// <param name="title"></param>
        /// <param name="isPageForEachLink"></param>
        /// <param name="sheet"></param>
        /// <param name="printables"></param>
        public static void ExportToPdf2(string title, bool isPageForEachLink, string sheet, IPrintable[] printables)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog()
            {
                FileName = title,
                Title = "导出Excel",
                Filter = "Pdf文件(*.pdf)|*.pdf"//"Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls"
            };
            DialogResult dialogResult = saveFileDialog.ShowDialog();
            if (dialogResult == DialogResult.Cancel)
                return;
            CompositeLink link = new CompositeLink(new PrintingSystem());
            // Create a link that will print a control.
            foreach (var item in printables)
            {
                //DevExpress.XtraPrinting.PrintableComponentLink plink = new PrintableComponentLink() { Component = item };
                DevExpress.XtraPrinting.PrintableComponentLink plink = new PrintableComponentLink()
                {
                    PrintingSystemBase = new PrintingSystemBase(),
                    Component = item,
                    Landscape = true,
                    PaperKind = PaperKind.A4
                };
                plink.PrintingSystemBase.Graph.Font = new Font("SimSun", 6, FontStyle.Bold, GraphicsUnit.Millimeter, 134);
                link.Links.Add(plink);
            }
            PdfExportOptions options = new PdfExportOptions();

            link.ExportToPdf(saveFileDialog.FileName, options);
            if (DevExpress.XtraEditors.XtraMessageBox.Show("保存成功,是否打开文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                System.Diagnostics.Process.Start(saveFileDialog.FileName);
        }

使用spire


static void Main(string[] args)
        {
            //加载PDF文档
            Spire.Pdf.PdfDocument sourceDocument = new Spire.Pdf.PdfDocument("d:\\1.pdf");
            //创建新PDF文档
            Spire.Pdf.PdfDocument newDocument = new Spire.Pdf.PdfDocument();
            //设置新文档页边距0
            newDocument.PageSettings.Margins.All = 0;
            //设置文档尺寸和源文件一样
            newDocument.PageSettings.Width = sourceDocument.Pages[0].Size.Width;
            newDocument.PageSettings.Height = sourceDocument.Pages[0].Size.Height;
            //删除第一页,破解水印
            newDocument.Pages.Add();
            newDocument.Pages.RemoveAt(0);
            //页面格式
            Spire.Pdf.Graphics.PdfTextLayout format = new Spire.Pdf.Graphics.PdfTextLayout();
            format.Break = Spire.Pdf.Graphics.PdfLayoutBreakType.FitPage;
            format.Layout = Spire.Pdf.Graphics.PdfLayoutType.Paginate;
            //将源文档每一页绘制到新文档
            foreach (Spire.Pdf.PdfPageBase sourcePage in sourceDocument.Pages)
            {
                //添加新页
                Spire.Pdf.PdfPageBase newPage = newDocument.Pages.Add();
                //创建绘制模板
                var template = sourcePage.CreateTemplate();
                //绘制源内容
                template.Draw(newPage, new PointF(0, 0), format);
                可以自由在新页绘制矩形、文字等信息
                //newPage.Canvas.DrawRectangle(Spire.Pdf.Graphics.PdfBrushes.White, new RectangleF(0, 0, 100, 100));
                //newPage.Canvas.DrawString("文字", new Spire.Pdf.Graphics.PdfFont(Spire.Pdf.Graphics.PdfFontFamily.Courier, 20f), Spire.Pdf.Graphics.PdfBrushes.White, new PointF(0, 0));
            }
 
            newDocument.SaveToFile("d:\\save.pdf");
        }

中文不显示问题 导出字体和dev默认不一致 修改appearanceprint的字体设置

使用devpress导出gridview到excel

        /// <summary>
        /// pdf导出
        /// </summary>
        private void ExportPdf2()
        {
            string startDate = dtpStartDate.Value.ToString("yyyyMMdd");
            string endDate = dtpEndDate.Value.ToString("yyyyMMdd");
            string FileName = "结算单_" + startDate + "_" + endDate;
            IPrintable[] Futuresprintables = { gcFundprofit, gcStockHold, gcFutureHold, gcFutureDone, gcDelivery, gcExercise };
            ExportToPdf2(FileName, true, "结算单", Futuresprintables);
        }

        /// <summary>
        /// 导出为pdf
        /// </summary>
        /// <param name="title"></param>
        /// <param name="isPageForEachLink"></param>
        /// <param name="sheet"></param>
        /// <param name="printables"></param>
        public static void ExportToPdf2(string title, bool isPageForEachLink, string sheet, IPrintable[] printables)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog()
            {
                FileName = title,
                Title = "导出Excel",
                Filter = "Pdf文件(*.pdf)|*.pdf"//"Excel文件(*.xlsx)|*.xlsx|Excel文件(*.xls)|*.xls"
            };
            DialogResult dialogResult = saveFileDialog.ShowDialog();
            if (dialogResult == DialogResult.Cancel)
                return;
            CompositeLink link = new CompositeLink(new PrintingSystem());
            // Create a link that will print a control.
            foreach (var item in printables)
            {
                //DevExpress.XtraPrinting.PrintableComponentLink plink = new PrintableComponentLink() { Component = item };
                DevExpress.XtraPrinting.PrintableComponentLink plink = new PrintableComponentLink()
                {
                    PrintingSystemBase = new PrintingSystemBase(),
                    Component = item,
                    Landscape = true,
                    PaperKind = PaperKind.A4
                };
                plink.PrintingSystemBase.Graph.Font = new Font("SimSun", 6, FontStyle.Bold, GraphicsUnit.Millimeter, 134);
                link.Links.Add(plink);
            }
            PdfExportOptions options = new PdfExportOptions();

            link.ExportToPdf(saveFileDialog.FileName, options);
//调整excel样式
             DevExpress.XtraSpreadsheet.SpreadsheetControl spreadsheetControl = new DevExpress.XtraSpreadsheet.SpreadsheetControl();
                DevExpress.Spreadsheet.IWorkbook workbook = (spreadsheetControl).Document;
                workbook.LoadDocument(FileName);
                foreach (var wksheet in workbook.Worksheets)
                {
                    int splitindex1 = dtFundprofit.Rows.Count + 3;
                    int splitindex2 = splitindex1+ dtStockHold.Rows.Count + 3+1;
                    int splitindex3 = splitindex2+ dtFutureHold.Rows.Count + 3+1;
                    int splitindex4 = splitindex3+ dtFutureDone.Rows.Count + 3+1;
                    int splitindex5 = splitindex4+ dtDelivery.Rows.Count + 3+1;
                    wksheet.Rows.Insert(splitindex1);
                    wksheet.Rows.Insert(splitindex2);
                    wksheet.Rows.Insert(splitindex3);
                    wksheet.Rows.Insert(splitindex4);
                    wksheet.Rows.Insert(splitindex5);
                   //wksheet.Cells.SetInsideBorders(Color.DarkGray, DevExpress.Spreadsheet.BorderLineStyle.None);
                   //wksheet.Cells.SetInsideBorders(Color.White, DevExpress.Spreadsheet.BorderLineStyle.Thin);
                   wksheet.GetUsedRange().Borders.SetAllBorders(Color.White, DevExpress.Spreadsheet.BorderLineStyle.Thin);
                    wksheet.GetUsedRange().Borders.SetOutsideBorders(Color.DarkGray, DevExpress.Spreadsheet.BorderLineStyle.Thick);
                    //new System.Drawing.Font("Microsoft Yahei", 14F, FontStyle.Regular, GraphicsUnit.Pixel);
                    //wksheet.Cells.Borders.SetAllBorders(Color.DarkGray, DevExpress.Spreadsheet.BorderLineStyle.None);
                    //wksheet.GetUsedRange().Borders.SetOutsideBorders(Color.DarkGray, DevExpress.Spreadsheet.BorderLineStyle.Thin);
                }
                workbook.SaveDocument(FileName);
            if (DevExpress.XtraEditors.XtraMessageBox.Show("保存成功,是否打开文件?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                System.Diagnostics.Process.Start(saveFileDialog.FileName);
        }

希望对各位coder有帮助,创作不易,帮忙三连☆☆☆。
 

标签:控件,devpress,gdv,DevExpress,Excel,FileName,Pdf,new,Spire
From: https://blog.csdn.net/yannsann/article/details/140517982

相关文章

  • Excel系列---【如何给一列字符串,在首尾快速加上双引号】
    你可以按照以下步骤将这个公式从A1应用到A164,并将结果生成到C1到C164:例如A1的内容为hello,在C1单元格中输入以下公式:=""""&A1&""","按下回车键后,C1单元格会显示A1单元格内容的修改结果,结果为"hello",。选中C1单元格,然后将鼠标放在单元格右下角的小黑点上,当鼠标变成十字形时,按......
  • 界面控件DevExpress Blazor UI v24.1 - 发布全新TreeList组件
    DevExpress BlazorUI组件使用了C#为BlazorServer和BlazorWebAssembly创建高影响力的用户体验,这个UI自建库提供了一套全面的原生BlazorUI组件(包括PivotGrid、调度程序、图表、数据编辑器和报表等)。DevExpress Blazor控件目前已经升级到v24.1版本了,此版本发布了全新的TreeLi......
  • 请问如何将带有斜纹水印pdf的转成Excel呢?
    大家好,我是Python进阶者。一、前言前几天在Python最强王者交流群【wen】问了一个Python自动化办公的问题,问题如下:请问如何将带有斜纹水印pdf的转成Excel呢?目前我把pdf转成图片,根据水印的颜色进行清除,但是在脱网环境下无法将图片转成Excel。二、实现过程后来【隔壁......
  • Python读Excel数据,创建Word文档上下文字典列表,元素为字典(新)
    #读Excel数据,创建Word文档上下文字典列表,元素为每个培训人员的上下文字典defcreate_docx_context_dict_list(_excel_path):"""输入参数::param_excel_path:Excel全路径功能:创建Word文档上下文字典列表,元素为每个培训人员的上下文字典字典的键为......
  • xlrd.biffh.XLRDError: Excel xlsx file; not supported
    问题描述今天在测试python读取excel文件的时候出现了异常Traceback(mostrecentcalllast):File"E:/worksp_py/hardwary/100day/thirtfive/testxml.py",line5,in<module>wb=xlrd.open_workbook("./test.xlsx")File"E:\Tools\anaconda3......
  • 比对两个excel文件数据差异
    背景工作中需要一个测试需求:需要比对两个excel文件的内容,以门店编码为唯一键,比对其他字段值不一致的地方,如有不一致需要写入另外一个文件解决方案使用python代码实现#-*-coding:utf-8-*-"""@File:数据核对脚本.py@Author:simon@email:[email protected]......
  • python gradio 页面控件
    1、textbox的使用importgradioasgrimportrequestsdefmobile(mobilephone):url='https://api.oioweb.cn/api/common/teladress?mobile='+str(mobilephone)headers={}payload={}response=requests.request("GET",url,......
  • JAVA操作Excel使用poi和easyexcel依赖的兼容性问题
      EasyExcel版本3.1.0及以上支持poi5.2.3。具体来说,EasyExcel3.1.0及之后的版本兼容poi4.1.2至5.2.2的范围,因此它确实支持poi5.2.3。但请注意,使用3.0.0及以上版本的EasyExcel配合poi5+时,需要手动在项目的依赖管理中排除poi-ooxml-schemas依赖,示例如下:<dependency>......
  • js 将table转成Excel
    1.情景展示如何使用js将网页中的表格转成Excel文件?2.具体分析通过SheetJS的xlsx.js文件实现。3.解决方案下载地址:https://github.com/SheetJS/sheetjs/archive/refs/tags/v0.18.5.zip打开压缩包,找到dis目录下的xlsx.full.min.js将该文件解压出来,放到项目当中。在需要......
  • Excel导出操作
    一、定义@Excel注解,将实体属性映射成excel对应的单元格表头、属性为导出列表的属性名称@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public@interfaceExcel{/***导出时在excel中排序*/publicintsort()defaultInteger.MAX_VALUE;/***导出到E......