有没有人用过Office中的OWC控件

chengpei_chen 2008-03-10 02:05:54
我在Winform中用了一下可以,但是到Webform中就不能用,控件不能选择数据源,编辑按钮都是灰色的,怎么回事
我用的是PivotTable 10.0
...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
iuhxq 2008-03-10
  • 打赏
  • 举报
回复
aspx:
<script language="javascript" type="text/javascript" src="/js/Calendar30.js"></script>
选择开始日期和结束日期。如果时间范围超过365则显示年表,如果时间范围超过30则显示月份表,如果超过1则显示日期表,否则显示小时表。<br />
开始日期:<input id="s" type="text" value="<%= Request.QueryString["s"]%>" onclick="fillDay(this)" >结束日期:<input id="e" value="<%= Request.QueryString["e"]%>" type="text" onclick="fillDay(this)" /><input type="button" value="查看" onclick="location.href='?s='+$F('s')+'&e='+$F('e')" /><br />
<asp:placeholder id="ChartHolder" runat="server"></asp:placeholder>

cs:

if (!IsPostBack && Request.QueryString["s"] != null && Request.QueryString["e"] != null)
{
string file;

DateTime s = DateTime.Parse(Request.QueryString["s"]);
DateTime et = DateTime.Parse(Request.QueryString["e"]);

string x = "";
string y = "";
string danwei = "时";
string sql = "";
int r = ((TimeSpan)(et - s)).Days;
//Response.Write(r);
//Response.Write("<br />");
if (r >= 365)
{
sql = "select datepart(yyyy,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(yyyy,regtime) order by d";
danwei = "年";
}
else if (r >= 30)
{
sql = "select datepart(mm,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(mm,regtime) order by d";
danwei = "月";
}
else if (r >= 1)
{
sql = "select datepart(dd,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(dd,regtime) order by d";
danwei = "日";
}
else
sql = "select datepart(HH,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(HH,regtime) order by d";

DateTime s1 = new DateTime(s.Year, s.Month, s.Day);
DateTime e1 = new DateTime(et.Year, et.Month, et.Day, 23, 59, 59);

sql = string.Format(sql, s1.ToString(), e1.ToString());
//Response.Write(sql);
//return;

DataSet ds = DAL.dbHelper.ExecuteDataset(sql);

if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
x = ds.Tables[0].Rows[0][0].ToString();
y = ds.Tables[0].Rows[0][1].ToString();
for (int i = 1; i < ds.Tables[0].Rows.Count; i++)
{
x += '\t' + ds.Tables[0].Rows[i][0].ToString();
y += '\t' + ds.Tables[0].Rows[i][1].ToString();
}

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

//在ChartSpace对象中添加图表,Add方法返回chart对象
ChChart objChart = objCSpace.Charts.Add(0);

//指定图表的类型。类型由ChartChartTypeEnum枚举值得到
objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;

//指定图表是否需要图例
objChart.HasLegend = true;

//给定标题
objChart.HasTitle = true;
objChart.Title.Caption = "注册用户/日期分布图";

//给定x,y轴的图示说明
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = "X : 日期/单位: " + danwei;
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = "Y : 数量";

//计算数据
/*categories 和 values 可以用tab分割的字符串来表示*/
//string strSeriesName = "图例 1";

//添加一个series
objChart.SeriesCollection.Add(0);

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

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

//给定值
objChart.SeriesCollection[0].SetData
(ChartDimensionsEnum.chDimValues,
(int)ChartSpecialDataSourcesEnum.chDataLiteral, y);
//输出成GIF文件.
file = "/tmp/" + Guid.NewGuid().ToString() + ".gif";

objCSpace.ExportPicture(Server.MapPath("~" + file), "GIF", 800, 400);

}
else
{
file = "/images/0.gif";
}
//把图片添加到placeholder.
string strImageTag = "<IMG SRC='" + file + "'/>";
ChartHolder.Controls.Add(new LiteralControl(strImageTag));
}

}
huaer1011 2008-03-10
  • 打赏
  • 举报
回复
有见过OWC.dll
还真没用过
学习
deepinnet 2008-03-10
  • 打赏
  • 举报
回复
学习顶帖
lovehongyun 2008-03-10
  • 打赏
  • 举报
回复
发个例子:

值给owc的数据用/t分开..网上有很多例子..你也可以搜一下

/// <summary>
/// 生成图片
/// </summary>
/// <param name="sName">图例</param>
/// <param name="cat">(x)分类</param>
/// <param name="value">(y)值</param>
public void BuildPic(ArrayList sName,ArrayList cat,ArrayList value)
{

Microsoft.Office.Interop.Owc11.ChartSpace objChart = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();
Microsoft.Office.Interop.Owc11.ChChart obj = objChart.Charts.Add(0);
obj.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeLine;
//obj.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeSmoothLine;




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

obj.HasLegend = true;

//给定标题
obj.HasTitle = true;
obj.Title.Caption = "总报表图表";

//给定x,y轴的图示说明
obj.Axes[0].HasTitle = true;
obj.Axes[0].Title.Caption = "时 间";
obj.Axes[1].HasTitle = true;
obj.Axes[1].Title.Caption = "Y : 值";


for (int i = 0; i <cat.Count; i++)
{


//添加一个series
obj.SeriesCollection.Add(i);

//给定series的名字

obj.SeriesCollection[i].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
+(int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, sName[i].ToString());

//给定分类(x轴)
obj.SeriesCollection[i].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
+(int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, cat[i].ToString());

//给定值

obj.SeriesCollection[i].SetData
(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
(int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, value[i].ToString());
}
//strCategory = "";
//strvalue = "";

//输出成GIF文件.
string strAbsolutePath = (Server.MapPath(".")) + "\\" + Session.SessionID + ".gif";
objChart.ExportPicture(strAbsolutePath, "GIF", 600, 350);

}
herol 2008-03-10
  • 打赏
  • 举报
回复
没用过,有情顶一下
fcxxfcxx 2008-03-10
  • 打赏
  • 举报
回复
学习

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧