`
weizhai12
  • 浏览: 145727 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

使用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));

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics