SSRS报表服务随笔(rdl报表服务)-报表结构与样式
设计rdl报表,比设置HTML页面简单多了,Reporting报表分为页眉,页脚,主体三个部分
rdl文件实际是xml结构的文件,具体是什么语言呢,很抱歉,这点我还不能回复,在我看来,是由固定节点的xml文本
报表结构
通过查看Reporting的报表,一个完整的报表,包含报表的一些配置(默认字体样式,自动刷新,语言,容器空白,报告单元类型,报表ID),数据源,数据集,报告部分(相当于容器),报表参数,报表参数布局这几个主要组成部分,根据报表样式的不同会有不同的组成部分,比如在报表中内嵌了一个图片,那么会多一个内嵌式图片的结构
此处附上一个rdl报表的代码
<?xml version="1.0" encoding="utf-8"?>
<Report MustUnderstand="df" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
<df:DefaultFontFamily>Segoe UI</df:DefaultFontFamily>
<AutoRefresh>0</AutoRefresh>
<DataSources>
<DataSource Name="DataSource1">
<ConnectionProperties>
<DataProvider>SQL</DataProvider>
<ConnectString>Data Source=DESKTOP-A2OHBFG\MSSQLSERVER2016;Initial Catalog=CN_BBG_TEST1108</ConnectString>
</ConnectionProperties>
<rd:SecurityType>None</rd:SecurityType>
<rd:DataSourceID>2a3c9c46-1d9d-470c-a113-05fac2f082d4</rd:DataSourceID>
</DataSource>
</DataSources>
<DataSets>
<DataSet Name="DataSet1">
<Query>
<DataSourceName>DataSource1</DataSourceName>
<CommandText>select * from student</CommandText>
</Query>
</DataSet>
</DataSets>
<ReportSections>
<ReportSection>
<Body>
<ReportItems>
<Chart Name="DataBar1">
<ChartCategoryHierarchy>
<ChartMembers>
<ChartMember>
<Label />
</ChartMember>
</ChartMembers>
</ChartCategoryHierarchy>
<ChartSeriesHierarchy>
<ChartMembers>
<ChartMember>
<Label />
</ChartMember>
</ChartMembers>
</ChartSeriesHierarchy>
<ChartData>
<ChartSeriesCollection>
<ChartSeries Name="Series">
<ChartDataPoints>
<ChartDataPoint>
<ChartDataPointValues>
<Y>=123</Y>
</ChartDataPointValues>
<ChartDataLabel>
<Style />
</ChartDataLabel>
<Style />
<ChartMarker>
<Style />
</ChartMarker>
<DataElementOutput>Output</DataElementOutput>
</ChartDataPoint>
</ChartDataPoints>
<Subtype>Stacked</Subtype>
<Style />
<ChartEmptyPoints>
<Style />
<ChartMarker>
<Style />
</ChartMarker>
<ChartDataLabel>
<Style />
</ChartDataLabel>
</ChartEmptyPoints>
<ValueAxisName>Primary</ValueAxisName>
<CategoryAxisName>Primary</CategoryAxisName>
<ChartSmartLabel>
<CalloutLineColor>Black</CalloutLineColor>
<MinMovingDistance>0pt</MinMovingDistance>
</ChartSmartLabel>
</ChartSeries>
</ChartSeriesCollection>
</ChartData>
<ChartAreas>
<ChartArea Name="Default">
<ChartCategoryAxes>
<ChartAxis Name="Primary">
<Visible>False</Visible>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
<FontSize>8pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
<ChartAxisTitle>
<Caption />
<Style>
<FontSize>9pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
</ChartAxisTitle>
<Margin>False</Margin>
<ChartMajorGridLines>
<Enabled>False</Enabled>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMajorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
</Style>
</ChartMajorTickMarks>
<ChartMinorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style />
</ChartAxisScaleBreak>
</ChartAxis>
<ChartAxis Name="Secondary">
<Visible>False</Visible>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
<FontSize>8pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
<ChartAxisTitle>
<Caption />
<Style>
<FontSize>9pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
</ChartAxisTitle>
<Margin>False</Margin>
<ChartMajorGridLines>
<Enabled>False</Enabled>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMajorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
</Style>
</ChartMajorTickMarks>
<ChartMinorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Location>Opposite</Location>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style />
</ChartAxisScaleBreak>
</ChartAxis>
</ChartCategoryAxes>
<ChartValueAxes>
<ChartAxis Name="Primary">
<Visible>False</Visible>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
<FontSize>8pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
<ChartAxisTitle>
<Caption />
<Style>
<FontSize>9pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
</ChartAxisTitle>
<ChartMajorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMajorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
</Style>
</ChartMajorTickMarks>
<ChartMinorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Minimum>0</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style />
</ChartAxisScaleBreak>
</ChartAxis>
<ChartAxis Name="Secondary">
<Visible>False</Visible>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
<FontSize>8pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
<ChartAxisTitle>
<Caption />
<Style>
<FontSize>9pt</FontSize>
<Color>#5c5c5c</Color>
</Style>
</ChartAxisTitle>
<ChartMajorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
</ChartMajorGridLines>
<ChartMinorGridLines>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>Dotted</Style>
</Border>
</Style>
</ChartMinorGridLines>
<ChartMajorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
<Style>None</Style>
</Border>
</Style>
</ChartMajorTickMarks>
<ChartMinorTickMarks>
<Style>
<Border>
<Color>Gainsboro</Color>
</Border>
</Style>
<Length>0.5</Length>
</ChartMinorTickMarks>
<CrossAt>NaN</CrossAt>
<Location>Opposite</Location>
<Minimum>NaN</Minimum>
<Maximum>NaN</Maximum>
<ChartAxisScaleBreak>
<Style />
</ChartAxisScaleBreak>
</ChartAxis>
</ChartValueAxes>
<Style>
<BackgroundColor>#00ffffff</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
</Style>
<ChartElementPosition>
<Top>3</Top>
<Left>10</Left>
<Height>96</Height>
<Width>80</Width>
</ChartElementPosition>
</ChartArea>
</ChartAreas>
<Palette>BrightPastel</Palette>
<ChartBorderSkin>
<Style>
<BackgroundColor>Gray</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
<Color>White</Color>
</Style>
</ChartBorderSkin>
<ChartNoDataMessage Name="NoDataMessage">
<Caption>没有可用数据</Caption>
<Style>
<BackgroundGradientType>None</BackgroundGradientType>
<FontWeight>Bold</FontWeight>
<TextAlign>General</TextAlign>
<VerticalAlign>Top</VerticalAlign>
</Style>
</ChartNoDataMessage>
<rd:DesignerMode>DataBar</rd:DesignerMode>
<DataSetName>DataSet1</DataSetName>
<Top>1.31974cm</Top>
<Left>4.67995cm</Left>
<Height>1.25cm</Height>
<Width>3.75cm</Width>
<Style>
<Border>
<Color>LightGrey</Color>
<Style>Solid</Style>
</Border>
<BackgroundColor>White</BackgroundColor>
<BackgroundGradientType>None</BackgroundGradientType>
</Style>
</Chart>
</ReportItems>
<Height>5.13367in</Height>
<Style />
</Body>
<Width>8.78968in</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
</ReportSection>
</ReportSections>
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
</GridLayoutDefinition>
</ReportParametersLayout>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
<rd:ReportID>ab81ed71-215d-4adb-b126-6bdadaa2f604</rd:ReportID>
</Report>
Reporting报表
报表版式
限于页眉页脚的数据,不能用于主体,比如页码,会导致报表报错
在报表数据的内置字段,是全部可以放在页眉和页脚中,部分可以放在主体中
限于主体的数据,不能直接放在页眉和页脚,可以通过聚合来实现现在在页眉,比如求和,平均值等等
在分组数据中,不能直接放到页眉和页脚,可以对分组进行分页,然后显示First(字段名)显示到页眉页脚中
报表样式
在第一篇就说明了,有地图,各种图,表和矩阵
下面是分页报表的所有布局控件

内嵌字段

具体也不用我讲了吧,看字面意思就知道是做什么来着
邮箱:linjie.rd@gmail.com
若有问题,请大家指出
SSRS报表服务随笔(rdl报表服务)-报表结构与样式的更多相关文章
- SSRS报表服务随笔(rdl报表服务)-创建一个简单的报表
这段时间一直在敲rdl报表,在国内的不这么留在,在国外的话,还是挺流行的,国内的话,这方面的资料很少很少,也踏过不少坑 先从SSRS了解起,SSRS全称 SQL Server Reporting Se ...
- SSRS报表服务随笔(rdl报表服务)-报表数据:使用第三方控件生成条形码
因为工作需要,需要将订单号显示成条形码,比如数据库存储的20190106A,我需要把这个转换为Code128来显示出来 在国内我没有找到这方面的教程,最后还是一个人自己摸索出来的 在这里我是使用的是B ...
- SSRS报表服务随笔(rdl报表服务)-报表参数
上一篇我们说了创建一个简单的显示报表,但在实际工作中,我们有很多要带条件的报表 现在先认识一下报表数据,首次打开SSDT,报表数据在窗口的左侧,要是找不到了,没关系,在工具栏-视图-最下面的报表数据 ...
- 深入详解美团点评CAT跨语言服务监控(八)报表持久化
周期结束 我们从消息分发章节知道,RealtimeConsumer在初始化的时候,会启动一个线程,每隔1秒钟就去从判断是否需要开启或结束一个周期(Period),如下源码,如果 value < ...
- ActiveReport系列报表开发随笔收集
转自:博客园 http://www.cnblogs.com/dahuzizyd/archive/2007/04/11/ActiveReport_All.html 使用ActiveReport for ...
- 犀利的报表系统,发票据与报表开发的快速利器,AgileEAS.NET SOA中间件GReport使用指南
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- 在报表中给session赋值实现报表间参数共享
1. 问题描述 在报表开发工具FineReport中,若有几张不同的报表,每张报表都有一个共同的项可以选择,比如日期时间.我们希望选择了第一张报表的时间之后,其他报表的默认时间都变为第一张报表选择的时 ...
- ActiveReports 报表应用教程 (2)---清单类报表
在大多报表系统中都有清单类报表的身影,比如:客户清单.商品信息清单.设备清单.物品采购清单.记账凭证.货品发货清单.员工清单等等.清单类报表看视乎比较简单,但是,由清单类报表演变而来的报表类型却十分丰 ...
- 在VS2012后的版本中做数据报表时,提示尚未指定报表“Report1”的报表定义
有一群的朋友在用VS2012做数据报表时,老是提示 本地报表处理期间出错. 尚未指定报表“Report1”的报表定义 未将对象引用设置到对象的实例. 我看了一下,步骤没错,我用VS2010做了一下,一 ...
随机推荐
- linux下面调试C、C++
(1)写好makefile文件(支持debug) objects = Main.o Satellite.o TimeSystem.o SRPPara:$(objects) g++ -g -o SRP ...
- iview源码解析(1)
概述 公司技术栈开始用vue主导开发,但因为公司前端会vue的不多所以在项目中用到vue的技术不是很深,之前出去面试被接连打击,而且本来打算开始为公司vue的项目构建自己的组件库所以去下载了iview ...
- mysql-索引、关系、范式
索引 几乎所有的索引都是建立在字段之上 索引:系统根据某种算法,将已有的数据(未来可能新增的数据也算),单独建立一个文件,这个文件能够快速的匹配数据,并且能够快速的找到对应的表中的记录 索引意义 能够 ...
- python爬虫入门(四)利用多线程爬虫
多线程爬虫 先回顾前面学过的一些知识 1.一个cpu一次只能执行一个任务,多个cpu同时可以执行多个任务2.一个cpu一次只能执行一个进程,其它进程处于非运行状态3.进程里包含的执行单元叫线程,一个进 ...
- 解决AES算法CBC模式加密字符串后再解密出现乱码问题
问题 在使用 AES CBC 模式加密字符串后,再进行解密,解密得到的字符串出现乱码情况,通常都是前几十个字节乱码: 复现 因为是使用部门 cgi AESEncryptUtil 库,找到问题后,在这里 ...
- shell脚本头,#!/bin/sh与#!/bin/bash的区别.
因为今天写了个小脚本,死活不成功,总是报文件或者目录不存在,问了一下我们马同学的正常写法,发现只有脚本头的区别,也就是今天本文要讲的#!/bin/sh与#!/bin/bash. 本文参考:https: ...
- 3d轮播图(另一种方式,可以实现的功能更为强大也更为灵活,简单一句话,比酷狗优酷的炫)
前不久我做了一个3d仿酷狗的轮播图,用的技术原理就是简单的jquery遍历+css样式读写. 这次呢,我们换一种思路(呵呵其实换汤不换药),看到上次那个轮播吗?你有没有发现用jquery的animat ...
- maven工程,java代码加载resources下面资源文件的路径
1 通过类加载器加载器, 1. URL resource = TestMain.class.getResource("/18500228040.txt");File file = ...
- mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
转自:http://www.169it.com/article/5994930453423417575.html 为了测试sql语句的效率,有时候要不用缓存来查询. 使用 SELECT SQL_NO_ ...
- 并发库应用之十 & 多线程数据交换Exchanger应用
申明:用大白话来说就是用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数据的人会一直等待第二个人,直到第二个人拿着数据到来时,才能彼此交换数据. java.util ...