zoukankan      html  css  js  c++  java
  • 使用owc开发报表的示例

     

           在开发一些管理信息系统中开发一些统计报表是必须的功能之一。开发报表的用到的组件也很多。可以用微软自带的owc组件,这是微软的office报表组件,可以和.net实现无缝的连接。也可以采用如ZedGraph等开源的.net组件来开发,还可以使用水晶报表和SQL Server自带的Report Service来开发报表。手段很多,各有所长。下面我介绍下我以前项目中使用的owc开发报表的一个示例,代码如下,代码中已经加入了必要的注视就不再一一讲解了。

    private void DrawMonthlyErrorTimeGraph(DataTable dtData)

            {

                string strGroup = Request.QueryString["Group"].ToString();

                string stryear = Request.QueryString["Year"].ToString();

                string strmonth = Request.QueryString["Month"].ToString();

                lblTitle.Text = stryear+"年"+strmonth+"月"+strGroup+"月xxxxx报表";

                // 在此处放置用户代码以初始化页面

                //创建ChartSpace对象来放置图表

                ChartSpace objCSpace = new ChartSpaceClass();

                //在ChartSpace对象中添加图表,Add方法返回chart对象

                ChChart objChart = objCSpace.Charts.Add(0);

                //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到

                objChart.Type = ChartChartTypeEnum.chChartTypeLineStackedMarkers;

                //指定图表是否需要图例

                objChart.HasLegend = true;

                //给定标题

                objChart.HasTitle = true;

                objChart.Title.Caption =strGroup+"xxxx透视";

                //给定x,y轴的图示说明

                objChart.Axes[0].HasTitle = true;

                objChart.Axes[0].Title.Caption = "X : 日期";

                objChart.Axes[1].HasTitle = true;

                objChart.Axes[1].Title.Caption = "Y : 故障时间";

                //计算数据

                /*categories 和 values 可以用tab分割的字符串来表示*/

                string strSeriesName_ErrorTime = "故障时间";

                int idays = GetMonthDays(stryear, strmonth);

                StringBuilder sbdays = new StringBuilder();

                for (int i = 1; i <= idays; i++)

                {

                    sbdays.Append(i.ToString());

                    sbdays.Append('\t');

                }

                string strCategory = sbdays.ToString();

                StringBuilder strb_ErrorTime = new StringBuilder();

               

               

                for (int j = 1; j <= idays; j++)

                {

                    if (dtData.Rows[0][j.ToString()].ToString() == "")

                    {

                        strb_ErrorTimeTime.Append("0");

                    }

                    else

                    {

                        strb_ErrorTimeTime.Append(dtData.Rows[0][j.ToString()].ToString());

                    }

                    strb_ErrorTime.Append('\t');

                }

                string strValue_Error = strb_ErrorTime.ToString();

                //添加一个series

                objChart.SeriesCollection.Add(0);

                //给定series的名字

                objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,

                +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName_StopLine);

                //给定分类

                objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,

                +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);

                //给定值

                objChart.SeriesCollection[0].SetData

                  (ChartDimensionsEnum.chDimValues,

                  (int)ChartSpecialDataSourcesEnum.chDataLiteral, strValue_Error );

                //创建GIF文件的相对路径.

                string FileName = "/" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString()

               + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".gif";

                //输出成GIF文件.

                objCSpace.ExportPicture(Server.MapPath("../TempImage") + FileName, "GIF", 650, 300);

                //把图片添加到placeholder.

                string strImageTag = "<IMG SRC='" + "../TempImage" + FileName + "'/>";

                PlaceChartStopLineTime.Controls.Add(new LiteralControl(strImageTag));

            }

         

  • 相关阅读:
    redis应用场景之文章投票设计思路
    Redis存储的5种数据结构
    v+=e 不等价于 v=v+e
    WebMagic
    指针函数和函数指针的区别
    为什么说StringBuilder不安全?
    sql注入
    Autowired报错处理
    SpringBoot入门最简单的一个项目示例
    MVC中Cookie的用法(二)---CookieHelper
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2192734.html
Copyright © 2011-2022 走看看