Vs2005报表设计器XML分析总结

[size=large][color=red]0--设计时默认页面设置.rdlc[/color][/size]
初始报表设计器画板大小及一些默认值,主要是在rd:InitialDimensions中描述页面大小及默认单位,提供英吋和厘米两种单位,关系约为1Inch = 2.5厘米,注意仅仅是大约,以rd:标记开头,页面大小及左右顶底页边距见名知义。ColumnSpacing描述的是分栏间隔,默认1CM.在Report中定义的Width及Body\Height,其实就是在画板中设计的报表宽与高。

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">

<Width>6.5in</Width>
<Body>
<Height>2in</Height>
</Body>
<rd:InitialLanguage>true</rd:InitialLanguage>
<rd:InitialDimensions>
<rd:UnitType>Inch</rd:UnitType>
<rd:LeftMargin>1in</rd:LeftMargin>
<rd:RightMargin>1in</rd:RightMargin>
<rd:TopMargin>1in</rd:TopMargin>
<rd:BottomMargin>1in</rd:BottomMargin>
<rd:PageWidth>8.5in</rd:PageWidth>
<rd:PageHeight>11in</rd:PageHeight>
<rd:ColumnSpacing>0.5in</rd:ColumnSpacing>
</rd:InitialDimensions>
<rd:InitialDimensions>
<rd:UnitType>Cm</rd:UnitType>
<rd:Width>16cm</rd:Width>
<rd:Height>5cm</rd:Height>
<rd:LeftMargin>2.5cm</rd:LeftMargin>
<rd:RightMargin>2.5cm</rd:RightMargin>
<rd:TopMargin>2.5cm</rd:TopMargin>
<rd:BottomMargin>2.5cm</rd:BottomMargin>
<rd:GridSpacing>0.25cm</rd:GridSpacing>
<rd:PageWidth>21cm</rd:PageWidth>
<rd:PageHeight>29.7cm</rd:PageHeight>
<rd:ColumnSpacing>1cm</rd:ColumnSpacing>
</rd:InitialDimensions>
</Report>


这些信息可以单击画板,然后右健查看属性就可以看到Report。


[size=large][color=red]1--Body及页面边框样式及背景设置.rdlc[/color][/size]
单击画板上的报表体,然后右健查看属性就可以看到报表真正的页面设置信息了,
其中包括:
分栏信息如分栏数、分栏之间的间距、宽与高(栏,当不分栏时实际就是报表宽高)
格式信息如背景颜色、背景图片、边框(颜色、线样式、线粗),在Style中描述。
我倒觉得Report\Width应放到Report\Body中,也就是类似Report\Body\Height。
这里说说边框,Html中,有个亮边框和暗边框,亮边框就是左边和顶边线,暗边框就是右边和底边线,它们的属性就是颜色。这里搞出一个默认的边框颜色,和Html保持一致,但没有亮、暗边框要领概念了,它搞的更广,干脆就矩形的四边即左、右、顶、底边分析描述。线样式、线粗同样也可以门针对四边进行描述。
值得一提的是,如果指定的图像但图像文件不存在,运行报表时会提示出错。其实没必要嘛,直接跳过去得了,本机的倒好,Internet谁能保证那个图片提供的服务器不Down机啊。于是设置了本机的一个有效图片,运行时提示报表包含外部图片,还要设置EnableExternalImages属性,真是罗嗦:)。

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<InteractiveWidth>21cm</InteractiveWidth>
<InteractiveHeight>29.7cm</InteractiveHeight>
<rd:GridSpacing>0.25cm</rd:GridSpacing>
<rd:SnapToGrid>true</rd:SnapToGrid>
<rd:ReportID>d9dddd8a-9336-41fb-ad58-7071ffac1a5a</rd:ReportID>
<rd:DrawGrid>true</rd:DrawGrid>
<Language>zh-CN</Language>

<LeftMargin>2.5cm</LeftMargin>
<RightMargin>2.5cm</RightMargin>
<TopMargin>2.5cm</TopMargin>
<BottomMargin>2.5cm</BottomMargin>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>

<Width>8cm</Width>
<Body>
<Columns>2</Columns>
<ColumnSpacing>1cm</ColumnSpacing>
<Height>6cm</Height>
<Style>

<BackgroundColor>Pink</BackgroundColor>

<BackgroundImage>
<Value>MISGoldPrinter.JPG</Value>
<Source>External</Source>
<BackgroundRepeat>NoRepeat</BackgroundRepeat>
</BackgroundImage>

<BorderColor>
<Default>DarkGray</Default>
<Top>Silver</Top>
<Default>DarkGray</Default>
<Left>Lime</Left>
<Right>Red</Right>
</BorderColor>

<BorderStyle>
<Default>Dotted</Default>
</BorderStyle>

<BorderWidth>
<Default>2pt</Default>
</BorderWidth>

</Style>
</Body>
</Report>


[size=large][color=red]2--页眉页脚.rdlc[/color][/size]
页眉页脚的概念我想就不用说了,用过word和Excel的都知道。它的属性同Body的Style一样,这里不敖述。
主要是增加特有属性PrintOnFirstPage、PrintOnLastPage表示是否在第一页和最后一页显示。虽然可以指定Width和Height属性,但是Width并不保存在XML文件中,不难不理解,页眉页脚宽就是打印页的宽。
出现With出现在属性中的原因可以想象是由于同一体系中继承的问题。就像MIS金质打印通XML解析器,所有类统一继承并实现一个接口,提供Rectang表示元素所在的打印区,即使是描述一条直线,我们同样也可以看到X、Y、Width和Height属性。

这些信息可以单击画板,然后右健查看PageHeader/Footer属性就可以看到Report。


Body与页眉页脚的区别和联系:
相同点:都是画板即页面的一个打印区,都可作为报表元素的容器,既然是这样,那当然都可以设置样式。
不同点:Body可以分栏,而页眉页脚只是一栏;Body每页都打印,而页眉页脚可以选择首尾页是否打印。

<?xml version="1.0" encoding="utf-8"?>
<Report >
<PageHeader>
<Height>1.25cm</Height>
<PrintOnLastPage>true</PrintOnLastPage>
<PrintOnFirstPage>true</PrintOnFirstPage>
</PageHeader>
<PageFooter>
<Height>1.5cm</Height>
<PrintOnLastPage>true</PrintOnLastPage>
<PrintOnFirstPage>true</PrintOnFirstPage>
</PageFooter>
</Report>



报表元素
上面说了Body与页眉页脚都可作为报表元素的容器。报表元素包括Textbox、Line、Table、Rectangle,其中Rectangle也可作为报表元素的容器。报表元素全部在ReportItems中描述。


[size=large][color=red]3--TextBox.rdlc[/color][/size]
同Body一样,TextBox同样具有Style,另外就是描述文本的Value及文本所有矩形区Left、Top、Width、Height,可以指定CanGrow、CanShrink自适应。文本字体、颜色、对齐及边框等在Style中描述,其中PaddingLeft/Right/Top/Bottom描述文本距边框的起点位置。

 <Body>
<ReportItems>
<Textbox Name="textbox1">
<Value>Hello World!</Value>
<Left>1cm</Left>
<Top>0.75cm</Top>
<Width>5.5cm</Width>
<Height>0.75cm</Height>

<CanShrink>true</CanShrink>
<CanGrow>true</CanGrow>

<Style>

<Color>SpringGreen</Color>
<FontFamily>宋体</FontFamily>
<FontStyle>Italic</FontStyle>
<FontWeight>700</FontWeight>
<TextDecoration>Underline</TextDecoration>

<TextAlign>Left</TextAlign>
<VerticalAlign>Bottom</VerticalAlign>
<Direction>RTL</Direction>

<PaddingLeft>20pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>10pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>


<BorderColor>
<Default>Red</Default>
</BorderColor>
<BorderStyle>
<Default>Inset</Default>
</BorderStyle>

</Style>
</Textbox>
</ReportItems>
</Body>


[size=large][color=red]4--Line.rdlc[/color][/size]
Location和EndPoint存入XML文件时,计算并转换为矩形区Left、Top、Width、Height。
LineColor、LineStyle、LineWidth存入XML文件时保存为Style,相应的对应为BoderColor、BoderStyle、BoderWidth并存入Default标记。

 <Body>
<ColumnSpacing>1cm</ColumnSpacing>
<ReportItems>
<Line Name="line1">
<Left>5cm</Left>
<Top>1.25cm</Top>
<Width>6cm</Width>
<Height>0.75cm</Height>
<Label>这是线</Label>

<Visibility>
<Hidden>true</Hidden>
</Visibility>

<Style>
<BorderColor>
<Default>Red</Default>
</BorderColor>
<BorderStyle>
<Default>Dotted</Default>
</BorderStyle>
<BorderWidth>
<Default>2pt</Default>
</BorderWidth>
<FontFamily>宋体</FontFamily>
</Style>
</Line>
</ReportItems>
<Height>5cm</Height>
</Body>



[size=large][color=red]5--Rectangle.rdlc[/color][/size]
和Body一样,它可作为报表元素的容器,因此,也有Style下的Boder相关属性,当然,既然是一个矩形,少不了Left、Top、Width、Height属性。PageBreakAtStart、PageBreakAtEnd表示中否在这这前或之后换页。可以在此Rectangle后画一个Line后运行看看效果。但它的有组合在运行时有的却并不是我们想像的。

 <Body>
<ReportItems>
<Rectangle Name="rectangle1">
<Left>5.5cm</Left>
<Top>0.75cm</Top>
<Width>7.01058cm</Width>
<Height>2.98942cm</Height>

<PageBreakAtStart>true</PageBreakAtStart>
<PageBreakAtEnd>false</PageBreakAtEnd>

<Style>
<BorderStyle>
<Default>Inset</Default>
</BorderStyle>
<FontFamily>宋体</FontFamily>
<BorderColor>
<Default>DarkOrange</Default>
</BorderColor>
</Style>
</Rectangle>
</ReportItems>
</Body>


[size=large][color=red]6--Image.rdlc[/color][/size]
它是在一个矩形区内,所以基本上具有Rectangle的固有属性,只是把把背景图片这个属性专门拿出来。

<Body>
<ReportItems>
<Image Name="image1">
<Source>External</Source>
<Value>c:\MISGoldPrinter.JPG</Value>
<Sizing>AutoSize</Sizing>

<Left>6cm</Left>
<Top>1cm</Top>
<Width>5.74074cm</Width>
<Height>5cm</Height>

</Image>
</ReportItems>
</Body>


[size=large][color=red]7--Char.rdlc[/color][/size]
Char基本具有Rectangle的固有属性和TextBox属性,需要数据源的支持。


对于列表(list)和子报表(SubReport),list可作为其它元素的容器。


表格Table,在列数固定和行数可变的网格中显示数据,由TableRows和TableColumns两部分组成。
TableRows在Header、Details、Footer三个部分中描述,每个TableRow由多个TableCell构成,TableCell的内容一般为TextBox,也可以是其它的报表元素,如Rectangle等,唯一不能的是Line。


[size=large][color=red]8--Table.rdlc[/color][/size]

Table:
表格在一个矩形区,所以具有Rectangle的属性,当然,它不具有Height,想一想,为什么?同时默认情况下具有TextBox属性,以用来从整体上改变单元格的格式。RepeatHeaderOnNewPage、RepeatFooterOnNewPage属性值分别保存于Header、Footer中的RepeatOnNewPage属性中。

TableColumn:
路径为Report\Body\ReportItems\Table\TableColumns,包含背景、边框、列宽(Width)及是否为固定列FixedHeader。
当然,这是以Body为容器的路径,如果是其它元素或嵌套情况,Report\Body相应的改为容器的路径。以下表示路径时不再特别说明。
如:
 <TableColumns>
<TableColumn>
<Width>3cm</Width>
<FixedHeader>true</FixedHeader>
</TableColumn>
...
<TableColumns>


其它的属性一般为所在该列报表元素特有属性,如果设置,则直接保存到特定的报表元素属性描述中,而不是保存在TableColumn中。

Header、Details、Footer:
根据名字可知,它们是描述表头表底固定行数据及表中间可变的数据行。因为有可变行,所以,没有Table不具有Height。RepeatOnNewPage表示是否每页都打印。
以Header为例,路么为Report\Body\ReportItems\Table\Header。

Table及相关的元素的XML文件主体描述如下:

<Body>
<ReportItems>
<Table Name="table1">

<Left>5cm</Left>
<Top>0.75cm</Top>
<Width>7.75132cm</Width>

<PageBreakAtStart>true</PageBreakAtStart>
<PageBreakAtEnd>true</PageBreakAtEnd>

<Style>
<TextAlign>Left</TextAlign>
<FontFamily>宋体</FontFamily>
<Direction>RTL</Direction>
<Color>Red</Color>
<TextDecoration>Underline</TextDecoration>
<FontStyle>Italic</FontStyle>
</Style>

<TableColumns>
<TableColumn>
<Width>3cm</Width>
<FixedHeader>true</FixedHeader>
</TableColumn>
<TableColumn>
<Width>2.24868cm</Width>
</TableColumn>
<TableColumn>
<Width>2.24868cm</Width>
</TableColumn>
</TableColumns>

<Footer>
<RepeatOnNewPage>true</RepeatOnNewPage>
<TableRows>
<TableRow>
<TableCells>
<TableCell>
<ReportItems>
<Textbox Name="textbox7">
<rd:DefaultName>textbox7</rd:DefaultName>
<ZIndex>5</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox8">
<rd:DefaultName>textbox8</rd:DefaultName>
<ZIndex>4</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox9">
<rd:DefaultName>textbox9</rd:DefaultName>
<ZIndex>3</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>1.08466cm</Height>
</TableRow>
</TableRows>
</Footer>

<Details>
<TableRows>
<TableRow>
<TableCells>
<TableCell>
<ReportItems>
<Textbox Name="textbox4">
<rd:DefaultName>textbox4</rd:DefaultName>
<ZIndex>2</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox5">
<rd:DefaultName>textbox5</rd:DefaultName>
<ZIndex>1</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox6">
<rd:DefaultName>textbox6</rd:DefaultName>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>1.08466cm</Height>
</TableRow>
</TableRows>
</Details>

<Header>
<RepeatOnNewPage>true</RepeatOnNewPage>
<TableRows>
<TableRow>
<TableCells>
<TableCell>
<ReportItems>
<Textbox Name="textbox1">
<rd:DefaultName>textbox1</rd:DefaultName>
<ZIndex>8</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox2">
<rd:DefaultName>textbox2</rd:DefaultName>
<ZIndex>7</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox3">
<rd:DefaultName>textbox3</rd:DefaultName>
<ZIndex>6</ZIndex>
<Style>
<PaddingLeft>2pt</PaddingLeft>
<PaddingBottom>2pt</PaddingBottom>
<FontFamily>宋体</FontFamily>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
</Style>
<CanGrow>true</CanGrow>
<Value />
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
</TableRow>
</TableRows>
</Header>
</Table>
</ReportItems>
</Body>


相关连接:

作者Blog:
http://blog.csdn.net/flygoldfish

声明:本文版权为周方勇所有,欢迎转载,请保留完整的内容及出处。
flygoldfish@163.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值