你的位置:首页 > 软件开发 > ASP.net > C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

发布时间:2016-06-07 16:00:12
记得2010年之前,公司的项目基本上都要用到报表,以前我们常用的方法就是针对客户的需求来定制化开发(基本上是死写代码)来实现,经常导致项目经常性的延期,因为客户的需求经常会变化,随着用户的使用认知度的提高,对报表的要求越来越高,导致程序员不停的修改代码来实现,效率不高、结束遥遥无 ...

    记得2010年之前,公司的项目基本上都要用到报表,以前我们常用的方法就是针对客户的需求来定制化开发(基本上是死写代码)来实现,经常导致项目经常性的延期,因为客户的需求经常会变化,随着用户的使用认知度的提高,对报表的要求越来越高,导致程序员不停的修改代码来实现,效率不高、结束遥遥无期。。。非常的痛苦;当然市面上有很多报表开发工具可以实现,但是针对小公司来说采购一套这样的系统的成本也非常的高,所以我们决定自己来开发一套像目前的润乾、FineReport 这样的报表设计器,来实现快速的报表设计制作。

   当初为了开发这样的系统,花费的了很长的时间学习查阅各种资料,其痛苦只有程序员才能体会,因为没有任何现成的实例代码可供参考,只有看别人的思路来一步步的摸索,本文将我们当初设计制作的报表设计器的功能分享出来,让有需要的或想开发报表设计的朋友们提供一个参考,尽量少走很动弯路,设计端可以直接使用,但是计算引擎和网页的计算的源码就不能分享出来了(请不要介意,因为涉及到公司的保密原因)

   记得当初为了制作报表设计器,在网上查找有没有相关的实例资料,找了很久,也是没有找到合适的,后来发现 SourceGrid 可以实现单元格的合并拆分功能,所以决定修改实现get='_blank'>winform端的报表设计。下面我将制作的E_Report 报表控件抽取出来建立一个简易的Winform的可运行的实例提供给大伙下载,希望能给你的开发提供一点帮助和借鉴;当然你可以直接使用也可以,里面的设计功能基本全部能。

   抽取出来的源码包含:E_Report 报表设计自定义控件DLL源码;  EReportDemo 建立的简易Winform 端设计器使用DLL的实例源码;

  一、运行效果

    实例中,只做了一个简单的效果,工具栏的按钮在单元格右击属性中都有,只是放了几个常用的在工具导航栏中(右击单元格属性可以看到设计导航)

    可以进行单元格的合并、拆分、字体、颜色、背景、边框等的设置,朋友们可以自己编写保存发布等功能,实现报表的真实功能;

   C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

      例如单元格属性(其他还有很多的属性,自己下载源码后运行起来就能看到了)

     C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

       对表格的斜线、斜线文字有很好的支持;可以设置表头、表位、标题等 实际效果图如下

     C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

 

二、使用介绍

1、页面初始化的时候,通过 ReportDoc 类 初始报表的行列及单元格属性

C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表
 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Drawing; 5 using System.Windows.Forms; 6 using System.Drawing.Drawing2D; 7 using System. 8 using System.Collections; 9 using E_Report; 10  11 namespace EReportDemo 12 { 13   /// <summary> 14   /// 报表表格对象 15   /// </summary> 16   public class ReportDoc 17   { 18     #region 变量参数定义 19  20     /// <summary> 21     /// 表格对象 22     /// </summary> 23     private EReport _nowReport; 24  25     /// <summary> 26     /// 报表配置编码 27     /// </summary> 28     private string _reportCode = ""; 29  30     /// <summary> 31     /// 表报设计状态 32     /// </summary> 33     private string _reportState = ""; 34  35     #endregion 36  37     #region 函数构造方法 38  39     /// <summary> 40     /// 构造函数 41     /// </summary> 42     public ReportDoc() 43     { 44       this._nowReport = null; 45       this._reportCode = ""; 46       this._reportState = ""; 47  48     } 49  50  51     /// <summary> 52     /// 获取--设置--表格对象 53     /// </summary> 54     public EReport NowReport 55     { 56       get { return this._nowReport; } 57       set { this._nowReport = value; } 58     } 59  60     /// <summary> 61     /// 报表配置编码 62     /// </summary> 63     public string ReportCode 64     { 65       get { return this._reportCode; } 66       set { this._reportCode = value; } 67     } 68  69     /// <summary> 70     /// 报表设计状态 71     /// 新增、修改 两种状态 72     /// </summary> 73     public string ReportState 74     { 75       get { return this._reportState; } 76       set { this._reportState = value; } 77     } 78  79     /// <summary> 80     /// 资源释放 81     /// </summary> 82     ~ReportDoc() 83     { 84       this._nowReport = null; 85       this._reportState = ""; 86  87     } 88  89     #endregion 90  91     #region 加载报表表格 92  93     /// <summary> 94     /// 初始化--报表表格 95     /// </summary> 96     public void InitReport() 97     { 98  99       int rCount = 41; // 41行100       int cCount = 20; // 20列101 102       _nowReport.Redim(rCount, cCount);103       _nowReport.FixedRows = 1;104       _nowReport.FixedColumns = 1;105 106       InitCells();107 108     }109 110     /// <summary>111     /// 初始化--单元格112     /// </summary>113     public void InitCells()114     {115       // 第一行 第一列116       _nowReport.Rows[0].Height = 23;117       _nowReport.Columns[0].Width = 50;118 119       // 设置00格120       _nowReport[0, 0] = new E_Report.Cells.HeaderColumn("");121 122       // 设置行123       for (int rr = 1; rr < _nowReport.RowsCount; rr++)124       {125         string tmRowT = rr.ToString();126         _nowReport[rr, 0] = new E_Report.Cells.HeaderRow(tmRowT);127       }128 129       // 设置列130       for (int cc = 1; cc < _nowReport.ColumnsCount; cc++)131       {132         _nowReport[0, cc] = new E_Report.Cells.HeaderColumn(_nowReport.GetColumnHeadTileChar(cc));133       }134 135       // 设置单元格136       for (int iRow = 1; iRow < _nowReport.RowsCount; iRow++)137       {138         for (int iCol = 1; iCol < _nowReport.ColumnsCount; iCol++)139         {140           _nowReport[iRow, iCol] = new E_Report.Cells.Cell("", typeof(string));141         }142       }143 144     }145 146 147     #endregion148 149   }150 }

原标题:C# 报表设计器 (winform 设计端)开发与实现生成网页的HTML报表

关键词:C#

C#
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录