(转)利用Office里面的OWC组件进行画图
本文讲述如何绘制条形图,折线图,柱形图,面积图等常见图形。
效果图:
手把手教程:
原理:OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供了灵活的同时也是最基本的机制。在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一些功能强大的软件(如IE6和Office 2000/XP/2003),那么就有能力利用Office Web组件提供一个交互式图形开发环境。这种模式下,客户端工作站将在整个任务中分担很大的比重。理论上说Excel能做的图都可以通过OWC画。
第一步:
右键点击网站根目录引用。如图所示:
第二步:
点击“添加引用”后弹出一个窗口,添加OWC的引用。如图所示:
点“确定”。
第三步:
代码中引用Microsoft.Office.Interop.Owc11。
using OWC11; //这个是我本人亲自试验之后需要引入的
全部代码
后台代码:
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
{
protected void Page_Load(object sender, EventArgs e)
{
//连接数据库并获取特定字符串
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++)
{
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)
{
strXdata += strData + "\t";
}
string strYdata = String.Empty;
//为y轴指定特定的字符串,以便与x轴相对应
foreach (string strValue in MonCount)
{
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", 400, 250);
//创建GIF文件的相对路径.
string strRelativePath = "./ShowData.gif";
//把图片添加到placeholder中,并在页面上显示
string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
this.PlaceHolder1.Controls.Add(new LiteralControl(strImageTag));
}
}
前台代码:
<%@ 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脚本:
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]
在数据库建好表以后要自己手动假想有12条数据,手动添加,最终结果类似下图:
后台程序说明:
最关键就是InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;
你可以在ChartChartTypeEnum后点出其他方法。如图所示:
下面列出的是其他类型图:
折线图:
面积图:
条形图:
OWC什么图形都可以画,还能画立体的,请大家自己尝试。
可以参考OWC手册,具体位置:
C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052\OWCVBA11.CHM
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/21aspnet/archive/2007/03/27/1543320.aspx
问题:
异常详细信息: System.Runtime.InteropServices.COMException: 拒绝访问。 (异常来自 HRESULT:0x80030005 (STG_E_ACCESSDENIED)) 解决方法:
在VS中测试没问题,但是放到IIS中则会出现异常,首先大家先讲原来生成的图片给删除,之后就不会出现异常了。
转载于:https://www.cnblogs.com/cookies9/archive/2011/04/01/2002688.html
(转)利用Office里面的OWC组件进行画图相关推荐
- 手动封装element-ui里面的button组件
首先我们知道vue里面包含有父子组件 但是你知道如果要进行一个element的手动组件封装 怎么封装吗 1首先第一步 首先我们建立一个组件 最好设置在一个文件目录下比如components 只是一个普 ...
- 利用elementUI里面的message做一个倒计时!简单实用
最近项目中需要一个退出倒计时,然而所以然就开始了下面的.直接代码简单直了 import { Message } from 'element-ui' //倒计时函数 var a = null funct ...
- 利用iview里的page组件实现分页功能
iview的经典组件中有一个page组件,可以实现内容的分页功能,但是官方文档中所给的内容较少,没有具体讲如何将内容分页.具体的分页功能参考如下: https://segmentfault.com/a ...
- 前端学习(3067):vue+element今日头条管理-element里面的image组件
- 前端学习(2431):element里面的image组件
- uni-app 微信公众号H5开发 里面的video 组件点击全屏后不会自动横屏播放 2
文章目录 前言 一.废话不多说直接上代码 总结 前言 根据上次发布的文章进一步改善了全屏横屏播放,去除了导航栏,实现伪全屏,但是ios系统不行,只能用自带的全屏按钮,让用户点击. 来点我遇到的问题吧 ...
- C#利用OWC组件生成数据报表
OWC Office Web Components是一组的COM控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能.OWC库包含四个主要的组件:电子表格组件,图表组件, ...
- 把游戏里面的 UI 做成前端组件库会怎么样?
在研究生的时候用 Vue2.0 做过一个守望先锋UI库. 当时很沉迷<守望先锋>,有一天突发奇想:我要把游戏里面的 UI 做成前端组件库会怎么样? 然后就一步步开始做了,最后也算把它给实现 ...
- 在ASP.NET中使用Office Web Components (OWC)创建统计图
图形和图表是Web上数据表现的很好的形式,在ASP.NET,可以使用Office Web Components (OWC)来创建统计图.Office Web Component (OWC)是包含在Mi ...
最新文章
- 某电商平台开发记要——客服系统
- 【USACO 3.1】Contact(01子串按出现次数排序)
- python使用shell命令_python 调用shell命令的方法
- python 标签字体大小_Python玩转Excel(第3期)~这里只有干货
- 德州扑克的思考和实验
- 【干货】前端开发者最常用的六款IDE
- HTML基础(新手入门教程)
- 天风掌财社新股认购如何操作?
- cesium添加填充_项目中的一个关于cesium的边界线的问题
- S700K道岔故障诊断数据txt及故障诊断算法
- 前端框架ice飞冰与java后台交互分享
- 以不变应万变的客服代表,让服务体验持续提升
- 【转载】WPS通过设置密码的方式对Excel文件加密
- 混合牛奶AcWing
- 【解决Maven项目module不显示蓝色小方块/java文件显示灰色橙色/module already exists问题】
- Python私有属性
- CL-ReLKT: Cross-lingual Language Knowledge Transfer for MultilingualRetrieval Question Answering论文阅读
- 2016版excel_有win10系统excel打开慢的问题来看
- java计算机毕业设计BS高校教师考勤系统源码+mysql数据库+系统+lw文档+部署
- c语言程序设计王延梅,医学超声原理 超声波的基本特征 机械波 纵波 波长、声速、频率(周期)公式:C = f = / T...
热门文章
- 第三人称计算机获奖感言,求一篇获奖感言,加分到300
- [bzoj1003]物流运输trans
- 新时代区块链研究院 | 区块链人才需求激增200%,薪资已赶超互联网!
- 宝塔一个IP创建多站点
- mac浏览器打不开java_苹果电脑Mac打不开网页怎么办?Mac打不开网页的解决方法...
- python turtle画中国象棋_python使用turtle绘制国际象棋棋盘
- 密苏里大学计算机排名,2019上海软科世界一流学科排名计算机科学与工程专业排名密苏里大学排名第301-400...
- Ubuntu 14.04开启root账号,禁用Guest账号
- 什么是业务流程管理BPM
- 杭电oj刷题C语言答案+思路