OWC画图表.

最近项目要用到画柱状图相关的东西,同事帮我用OWC实现了(在这里要谢谢WEINI),然后我根据实际需要又进行了点修改,因此对OWC也有了一点认识,从网上看到一篇比较详细的介绍的文章,转过来记录一下,以备后面还用到的说.

[原文地址] 

 

本文讲述如何绘制条形图折线图柱形图面积图等常见图形。

效果图

 

手把手教程:

原理:OWC是Office   Web   Compent的缩写,即Microsoft的Office   Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能 强大的软件(如IE6和Office   2000/XP/2003),那么就有能力利用Office   Web组件提供一个交互式图形开发环境。这种模式下,客户端工作站将在整个任务中分担很大的比重。理论上说Excel能做的图都可以通过OWC画。

第一步:

右键点击网站根目录引用。如图所示:

 

 

第二步:

点击“添加引用”后弹出一个窗口,添加OWC的引用。如图所示:

 

 

点“确定”。

第三步:
代码中引用Microsoft.Office.Interop.Owc11。

全部代码

后台代码

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

using System.Data.SqlClient;   //添加数据操作引用
using Microsoft.Office.Interop.Owc11;//添加Office组件引用

public partial class OWCdrawing : System.Web.UI.Page
ExpandedBlockStart.gifContractedBlock.gif
{
    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{

        
//连接数据库并获取特定字符串
        string strSeriesName = "图例1";
        
string ConnectString = "Server=(local);DataBase=web;Uid=sa;Pwd=sa";
        
string Sql = "SELECT month,Allcount FROM Chart";
        SqlConnection myConn 
= new SqlConnection(ConnectString);
        myConn.Open();
        SqlDataAdapter Da 
= new SqlDataAdapter(Sql, myConn);
        DataSet ds 
= new DataSet();
        Da.Fill(ds);

        
//存放月
        string[] MonNum = new string[12];
        
//存放数据
        string[] MonCount = new string[12];
        
//为数组赋值
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            MonNum[i] 
= ds.Tables[0].Rows[i][0].ToString();
            MonCount[i] 
= ds.Tables[0].Rows[i][1].ToString();
        }

        
//为x轴指定特定字符串,以便显示数据
        string strXdata = String.Empty;
        
foreach (string strData in MonNum)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            strXdata 
+= strData + "\t";
        }

        
string strYdata = String.Empty;
        
//为y轴指定特定的字符串,以便与x轴相对应
        foreach (string strValue in MonCount)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            strYdata 
+= strValue + "\t";
        }


        
//创建ChartSpace对象来放置图表
        ChartSpace laySpace = new ChartSpaceClass();

        
//在ChartSpace对象中添加图表
        ChChart InsertChart = laySpace.Charts.Add(0);

        
//指定绘制图表的类型。类型可以通过OWC.ChartChartTypeEnum枚举值得到
        
//InsertChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图
        
//InsertChart.Type = ChartChartTypeEnum.chChartTypeArea;//面积图
        
//InsertChart.Type = ChartChartTypeEnum.chChartTypeBarClustered;//条形图
        InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱形图

 

        
//指定图表是否需要图例标注
        InsertChart.HasLegend = false;

       
        InsertChart.HasTitle 
= true;//为图表添加标题
        InsertChart.Title.Caption = "2006年清清月儿每个月花销流水账";//标题名称

        
//为x,y轴添加图示说明
        InsertChart.Axes[0].HasTitle = true;
        InsertChart.Axes[
0].Title.Caption = "";//月份
        InsertChart.Axes[1].HasTitle = true;
        InsertChart.Axes[
1].Scaling.SplitMinimum = 200;
        InsertChart.Axes[
1].Title.Caption = "数量";

        
//添加一个series系列
        InsertChart.SeriesCollection.Add(0);

        
//给定series系列的名字
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);

        
//给定分类
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);

        
//给定值
        InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);
        
//输出文件.
        string strAbsolutePath = (Server.MapPath(".")) + "\\ShowData.gif";
        laySpace.ExportPicture(strAbsolutePath, 
"GIF"400250);

        
//创建GIF文件的相对路径.
        string strRelativePath = "./ShowData.gif";

        
//把图片添加到placeholder中,并在页面上显示
        string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
        
this.PlaceHolder1.Controls.Add(new LiteralControl(strImageTag));
    }

}

 

前台代码

ContractedBlock.gif ExpandedBlockStart.gif Code
ExpandedBlockStart.gifContractedBlock.gif<%@ Page Language="C#" AutoEventWireup="true" CodeFile="OWCdrawing.aspx.cs" Inherits="OWCdrawing" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>清清月儿http://blog.csdn.net/21aspnet</title>
</head>
<body>
    
<form id="form1" runat="server">
   
<div style="text-align: left">
        
<table style="width: 600px">
            
<tr>
                
<td colspan="3" style="height: 20px">
                    
<strong>怎么样在ASP.NET2.0中使用OWC组件画图</strong></td>
            
</tr>
            
<tr>
                
<td colspan="3" rowspan="2" style="height: 21px">
        
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                
</td>
            
</tr>
            
<tr>
            
</tr>
        
</table>
   
    
</div>
    
</form>
</body>
</html>

数据库SQL脚本

ContractedBlock.gif ExpandedBlockStart.gif Code
USE [web]
GO
/****** 对象:  Table [dbo].[Chart]    脚本日期: 03/27/2007 22:26:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Chart](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [month] [smallint] NULL,
 [Allcount] [int] NULL
) ON [PRIMARY]

 

后台程序说明:
最关键就是InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;

你可以在ChartChartTypeEnum后出其他方法。

 

 

转载于:https://www.cnblogs.com/gugunet/archive/2009/01/10/1373200.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值