ASP调用BO的WEBI开发的报表
来源:互联网 发布:mysql custom join 编辑:程序博客网 时间:2024/05/16 10:48
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 BusinessObjects.ReportEngine;
using CrystalDecisions.Enterprise;
using System.IO;
using System.Text.RegularExpressions;
/// <summary>
/// Class1 的摘要说明
/// </summary>
public class Class1
{
public delegate void SetPromptsHandler(IPrompts prompts);
public event SetPromptsHandler SetPrompt;
public Class1()
{ }
public string[] GetBOScript(int idocID, string user, string password, string cms, string auth)
{
string content = "";
string storageToken = "";
//
// TODO: 在此处添加构造函数逻辑
//
ReportEngines boReportEngines = null;
IDocumentInstance boIDocumentInstance = null;
int id = idocID;
//EnterpriseSession boEnterpriseSession = (EnterpriseSession)Session["EnterpriseSession"];
EnterpriseSession boEnterpriseSession = (new SessionMgr()).Logon(user, password, cms, auth);
boReportEngines = new ReportEngines(boEnterpriseSession.LogonTokenMgr.DefaultToken);
IReportEngine boIReportEngine = (IReportEngine)boReportEngines.getService(ReportEngineType.WI_ReportEngine);
boIDocumentInstance = boIReportEngine.OpenDocument(id);
boIDocumentInstance.Refresh();
// boIDocumentInstance.MustFillPassword not supported with RE.NET version when this sample created.
//if (boIDocumentInstance.MustFillPassword) {
// Session["ErrorMessage"] = "Context Prompts not supported in this sample.";
// Response.Redirect("ErrorPage.aspx");
//}
// Flag error for functionality not supported in this sample.
if (boIDocumentInstance.MustFillContextPrompts)
{
throw new Exception("111");
}
if (boIDocumentInstance.MustFillPrompts)
{
IPrompts prompts = boIDocumentInstance.GetPrompts();
this.SetPrompt(prompts);
boIDocumentInstance.SetPrompts();
}
if (boIDocumentInstance.MustFillPrompts)
{
throw new Exception("参数没有付全");
}
string reportID = boIDocumentInstance.Reports[0].ID;
IReport boIReport = boIDocumentInstance.Reports[reportID];
if (boIReport.PaginationMode != PaginationMode.Page)
boIReport.PaginationMode = PaginationMode.Page;
if (boIReport.ReportMode != ReportMode.Viewing)
((IDrillInfo)boIReport).EndDrill();
storageToken = boIDocumentInstance.StorageToken;
IHtmlView boIHtmlView = (IHtmlView)boIReport.GetView(OutputFormatType.Dhtml);
//boIHtmlView.UserAgent = Request.UserAgent;
StringWriter sw = new StringWriter();
boIHtmlView.WriteContent(sw);
content = sw.ToString();
Match htmlparts = Regex.Match(content, @"<head>(.*?)</head>.*<body(.*?)>(.*?)</body");
string headExtension = htmlparts.Groups[1].Captures[0].ToString();
string bodyAttributes = htmlparts.Groups[2].Captures[0].ToString();
content = htmlparts.Groups[3].Captures[0].ToString();
string[] result = new string[] { headExtension, bodyAttributes, content };
return result;
}
}
以上是我封装的类,通过这个类可以访问BO的报表,举个如何调用的例子:
Class1 class1 = new Class1();
class1.SetPrompt += new Class1.SetPromptsHandler(class1_SetPrompt);
ss = A;
string[] s = class1.GetBOScript(662, "administrator", "", "ws03r2entbase", "Enterprise");
headExtension = s[0];
bodyAttributes = s[1];
content = s[2];
void class1_SetPrompt(IPrompts prompts)
{
prompts[0].EnterValues(new string[] { "3" });
}
在asp中这样调用
<head runat="server">
<title>无标题页</title>
<%=headExtension %>
</head>
<body <%=bodyAttributes %>>
<form id="form1" runat="server">
<div>
<%=content %>
</div>
</form>
</body>
</html>
这样就可以用ASP调用BO的WEBI报表了!
- ASP调用BO的WEBI开发的报表
- sap BI webi报表模板:webi报表查询字段 批量查询的EXCEL模板
- BO WEBI 技巧 - 超链传参
- SAP BO 报表和FineUI(ASP.NET)的无缝集成
- 使用BO JAVA SDK打开WEBI报表,并进行PDF、EXCEL、CSV、HTML导出
- 使用JAVA代码提取SAP BOE WEBI 4.0报表的SQL语句
- sap BI webi报表技巧:用户指定(自定义)排序的列
- BW的层次结构(hierarchy)在Webi报表中展现
- WEBI上取月的整周
- ASP.NET MVC调用Delphi开发的Web报表打印activex组件
- webi报表中的上下文
- 清除Webi报表缓存
- 基于hana的BO报表数据权限的控制方法
- 关于BO刷新报表时报“部分结果”提示的解决
- BO报表制作中需求进行报表之间的链接写法
- 用Delphi开发报表打印的ASP组件
- [水晶报表小技巧-开发-3]ASP.Net中使用水晶报表10的打印功能
- ASP开发中数据库文件调用的捷径
- IE6和以下版本解决下拉框挡住Div问题
- ASP.NET弹出关闭窗口
- 单选按钮和列表框的数据加载,注意equals()方法和==的区别,一个是内容,一个是地址
- 独家:程序员五大层次,你属于哪一层?
- js技巧收集(200多个)——3
- ASP调用BO的WEBI开发的报表
- 最新KMplayer播放器
- js技巧收集(200多个)——4
- 函数中的值传递
- ALV GRID学习笔记----Double Click事件
- java util Date into a sql Date
- js技巧收集(200多个)——5
- 二叉空间分割碰撞
- 一个计算机专业学生几年的Java编程经验汇总