微软BI SSRS渐悟之Asp.net下载已部署报表

浏览: 2710

引言

在有些时候,我们会需要将已部署的报表下载到本地。各位看官可能要惊讶了,报表都是从本地定制部署到服务器的。我们本地有报表源文件,何必要大费周折的去服务器下载呢。在此举几个例子,不喜勿喷哦。

1、本地报表项目文件丢失了,别说不可能,一切皆有可能的。

2、没带自己的电脑,或者电脑在公司而人不在公司。

3、客户有定制报表的能力,在原报表基础上做了调整

4、其他一切可能的可能……

关键知识点

SSRS Reports管理站点:做过报表的同学对这个应该都不陌生。打开Reporting Services配置管理器,选择报表管理器URL,说到这儿都明白了吧。


ReportBuilder(报表生成器):这个东东有的同学可能没太在意,通常我们做报表都是使用SSDT。那这个报表生成器是什么呢?它算是给非开发人员提供的一个报表定制工具吧。它的功能几乎和SSDT一样,操作很像Excel。下载的话通过访问Reports就可以下载,也可以从RS的安装目录找到它。


我的环境点击这个报表生成器,会启动OneClick安装模式,但是最后会报一个无权限的错误。于是我是从安装目录直接拷出来用的。包括给客户也是直接拷贝。


整个界面和SSDT是不是很像呢,而且不像SSDT显示那么技术,但是不缺少专业感。

部署报表存储:这个说法有点拗口,其实就是报表部署之后去哪儿了呢。报表服务器是怎么存储这些报表的。这缘于一位网友的提问,我也是找了半天,最后发现它是存储在报表的ReportServer库的Catalog表,如果不对还请指点。


Reports下载

step1、打开Reports站点,这儿可能需要验证身份,输入用户名密码即可

step2、在报表文件夹下找到要下载的报表

step3、鼠标悬停后,报表名称右侧会显示一个向下箭头,点击箭头在快捷菜单中点击“下载”菜单。


提示:如果悬停看不到箭头,尝试调下浏览器兼容模式。

报表生成器下载

首先本地需要有ReportBuilder工具,或者能够在Reports中点击报表生成器打开。


step1、打开报表生成器

step2、点击连接,输入报表服务器地址,输入身份信息。(也可以在打开的时候做这一步)

连接:

打开:

step3、另存为

 

数据库流下载

我们已经知道报表部署之后是以二进制流的方式存储在数据库的Catalog表中。自然就可以通过程序来访问数据库,将报表以文件流的方式下载到本地。下载分享下我用asp.net写的案例。

SqlConnection conn = new SqlConnection("server=.\\mssqlserver2;database=ReportServer$MSSQLSERVER2;uid=xxx;pwd=xxxx;");
conn.Open();

SqlCommand comm = new SqlCommand("select Name, Content from Catalog where Type = 2", conn);
using(IDataReader reader = comm.ExecuteReader())
{
while (reader.Read())
{
byte[] image_bytes = reader["Content"] as byte[];
this.Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(reader["name"].ToString() + ".rdl", System.Text.Encoding.UTF8));
this.Response.BinaryWrite(image_bytes);
this.Response.End();
}
}
推荐 1
本文由 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

1 个评论

总结的很好!

要回复文章请先登录注册