<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_意识产生思想，思想决定行动，行动体现方法，方法铸造成功！</title><subtitle type="text">看客-waterlion(水随风)</subtitle><id>http://feed.cnblogs.com/blog/u/28816/rss</id><updated>2011-02-20T12:42:04Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28816/rss"/><entry><id>http://www.cnblogs.com/waterlion/archive/2011/02/20/1959237.html</id><title type="text">[翱捷报表]报表系统的文件设计</title><summary type="text">背景  在报表打印的过程中，总结出了基本的报表格式。  前言  为了能使绘制出来的报表能够很好的和其它应用程序兼容，报表设计器会最终会将绘制好的表报保存为通用的文件格式。而该使用哪一种文件格式呢？根据研究和分析，在现在常见的报表文件中，除了那些二进制加密处理过的文件外，可以看到的类型有通过XML格式定义的报表文件，通过程序语法解释的编程式报表文件，还有由一些编程语言集成在一起的报表文件—也算是一种...</summary><published>2011-02-20T12:42:00Z</published><updated>2011-02-20T12:42:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2011/02/20/1959237.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2011/02/20/1959237.html"/><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;&lt;strong&gt;背景&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;在报表打印的过程中，总结出了基本的报表格式。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;为了能使绘制出来的报表能够很好的和其它应用程序兼容，报表设计器会最终会将绘制好的表报保存为通用的文件格式。而该使用哪一种文件格式呢？根据研究和分析，在现在常见的报表文件中，除了那些二进制加密处理过的文件外，可以看到的类型有通过XML格式定义的报表文件，通过程序语法解释的编程式报表文件，还有由一些编程语言集成在一起的报表文件—也算是一种编程式报表，但大部分的报表使用的是XML格式的。    &lt;br /&gt;XML文档是国际标准的文档格式，非常开放，其他应用程序很容易利用设计器生成的文件，简化了设计器和其他应用系统的数据接口。因此，在系统报表文件的格式选择上，采用了XML文件格式。     &lt;br /&gt;报表文件格式的确立，主要以文件格式可读性，可操作性作为确立标准。而且要考虑这种文件格式的友好程度，是否能在代码中很好的被访问，并且有很好的容错。在设计报表文件格式的时候，会注意到这种格式需要很好的在程序与设计器之间访问，而且要很好的被各种程度的开发人员所认同，比如说WEB开发人员，如果以一个二进制的文件就不会很直观让WEB开发人员读取到，所以采用了XML作为报表内容的载体。其标签也与中间件中的类库一一对应，属性也借鉴了WEB开发中的部分标签。这会让人更加容易直接从文件中查看，尽管大部分情况下会直接使用程序进行读取而不会去看。并且在一定的规则或文档下，可以很快转化为office，pdf等压缩可视存储格式。     &lt;br /&gt;在报表格式设计的时候还有一个比较关键的因素，就是XML是很容易也很方便与其他报表程序及跨地域的网络中所共享的。这是选择它的另一个原因。&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff8000" size="6"&gt;&lt;strong&gt;设计&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;在设计报表格式的过程中，遵循了从大到小，从基础到特殊的元素设计原则。即从最外层的基本元素开始设计，从最简单的打印功能元素开始设计。&lt;/p&gt;  &lt;p&gt;在报表成型的过程中，首先要指定这个报表所要显示的长宽及纸张的一些属性，这些都是在报表传到打印机进行打印时所必须设定的属性，而且一张一张的报表也是有自己特有的一些属性的。通常情况下，不会太关心纸张的大小和长宽，那是因为大多的报表设计程序在设计初期就会指定好工作区域（报表模板）的长宽及纸张类型，那么它对某张报表进行打印和输出，无法完成多报表同时打印的操作，因为许多报表软件打印设计时是争对某一固定的长宽格式进行打印的。    &lt;br /&gt;因此在XML文件中用AojPaper做根元素来标示。这样在打印的过程中就会对每张报表做指定的长宽和纸张设置，就可以完成多报表同时打印的复杂要求了。下表是报表文件中的AojPaper标签的定义。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;表1 AojPaper的属性说明&lt;/b&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="695"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;属性名&lt;/td&gt;        &lt;td valign="top" width="495"&gt;说明&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Id&lt;/td&gt;        &lt;td valign="top" width="495"&gt;唯一标识&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Width&lt;/td&gt;        &lt;td valign="top" width="495"&gt;打印区域宽度&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Height&lt;/td&gt;        &lt;td valign="top" width="495"&gt;打印区域高度&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;PaperSizeName&lt;/td&gt;        &lt;td valign="top" width="495"&gt;打印纸类型&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Orientation&lt;/td&gt;        &lt;td valign="top" width="495"&gt;指定如何在打印介质上确定内容页的方向&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;Margin&lt;/td&gt;        &lt;td valign="top" width="495"&gt;页面边缘宽度&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;GridStyleFlag&lt;/td&gt;        &lt;td valign="top" width="495"&gt;指定报表设计区域是否需要网格布局&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;DrawByGridStyle&lt;/td&gt;        &lt;td valign="top" width="495"&gt;指定在绘制对象时是否需要参照网格布局&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="200"&gt;DistanceAboutGridStyle&lt;/td&gt;        &lt;td valign="top" width="495"&gt;网格布局时候个点的距离&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;在本软件中包含了三个最基本打印元素：文本、图片、表。然而这些元素都是包含在AojPaper这个标签之下的。在文本打印中，文本被定义成Label。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;表2 是报表文件中的Label标签定义&lt;/strong&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="696"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="140"&gt;属性名&lt;/td&gt;        &lt;td valign="top" width="306"&gt;说明&lt;/td&gt;        &lt;td valign="top" width="248"&gt;默认值&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="144"&gt;Id&lt;/td&gt;        &lt;td valign="top" width="304"&gt;对象Id&lt;/td&gt;        &lt;td valign="top" width="248"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="147"&gt;PositionX&lt;/td&gt;        &lt;td valign="top" width="303"&gt;横坐标&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="150"&gt;PositionY&lt;/td&gt;        &lt;td valign="top" width="301"&gt;纵坐标&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="152"&gt;Width&lt;/td&gt;        &lt;td valign="top" width="300"&gt;宽&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="154"&gt;Height&lt;/td&gt;        &lt;td valign="top" width="299"&gt;高&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="156"&gt;BorderStyle&lt;/td&gt;        &lt;td valign="top" width="298"&gt;边框样式&lt;/td&gt;        &lt;td valign="top" width="248"&gt;Solid&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="157"&gt;BorderWidth&lt;/td&gt;        &lt;td valign="top" width="297"&gt;边框宽度&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0.5F&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="158"&gt;BorderColor&lt;/td&gt;        &lt;td valign="top" width="297"&gt;边框颜色&lt;/td&gt;        &lt;td valign="top" width="248"&gt;#000000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;BackStyle&lt;/td&gt;        &lt;td valign="top" width="296"&gt;背景样式&lt;/td&gt;        &lt;td valign="top" width="248"&gt;None&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="160"&gt;BackColor&lt;/td&gt;        &lt;td valign="top" width="296"&gt;背景颜色&lt;/td&gt;        &lt;td valign="top" width="248"&gt;#000000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;Shape&lt;/td&gt;        &lt;td valign="top" width="295"&gt;边框形状&lt;/td&gt;        &lt;td valign="top" width="248"&gt;Rectangle&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;Alignment&lt;/td&gt;        &lt;td valign="top" width="295"&gt;字体打印的显示方向&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;Format&lt;/td&gt;        &lt;td valign="top" width="295"&gt;显示的样式&lt;/td&gt;        &lt;td valign="top" width="248"&gt;NoFormat&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;FamliyName&lt;/td&gt;        &lt;td valign="top" width="295"&gt;系统字体名称&lt;/td&gt;        &lt;td valign="top" width="248"&gt;Consolas&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;FontSize&lt;/td&gt;        &lt;td valign="top" width="295"&gt;字体大小&lt;/td&gt;        &lt;td valign="top" width="248"&gt;10&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;FontStyle&lt;/td&gt;        &lt;td valign="top" width="295"&gt;指定应用到文本的字形信息&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;Color&lt;/td&gt;        &lt;td valign="top" width="295"&gt;字体颜色&lt;/td&gt;        &lt;td valign="top" width="248"&gt;#000000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="161"&gt;ViewFormat&lt;/td&gt;        &lt;td valign="top" width="295"&gt;显示的格式&lt;/td&gt;        &lt;td valign="top" width="248"&gt;0&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;从Label的标签内部中还有一个子标签，即Text标签，Text标签用于对所要打印的文字的显示属性进行设定。在文字打印的过程中，通常是先指定一块区域然后在这段区域内进行打印，在这块区域中用一些属性来描述一些打印细节，那么在图片的标签中没有这种内部镶嵌的标签，因为作为图片元素的目的只是显示图片，在显示图片中，标签定义如表所示：&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;表3 是报表文件中的Image标签定义&lt;/strong&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="696"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="159"&gt;属性名&lt;/td&gt;        &lt;td valign="top" width="361"&gt;说明&lt;/td&gt;        &lt;td valign="top" width="174"&gt;默认值&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;Id&lt;/td&gt;        &lt;td valign="top" width="361"&gt;唯一标识&lt;/td&gt;        &lt;td valign="top" width="174"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;PositionX&lt;/td&gt;        &lt;td valign="top" width="361"&gt;横坐标&lt;/td&gt;        &lt;td valign="top" width="174"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;PositionY&lt;/td&gt;        &lt;td valign="top" width="361"&gt;纵坐标&lt;/td&gt;        &lt;td valign="top" width="174"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;Width&lt;/td&gt;        &lt;td valign="top" width="361"&gt;宽&lt;/td&gt;        &lt;td valign="top" width="174"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;Height&lt;/td&gt;        &lt;td valign="top" width="361"&gt;高&lt;/td&gt;        &lt;td valign="top" width="174"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;BorderStyle&lt;/td&gt;        &lt;td valign="top" width="361"&gt;边框样式&lt;/td&gt;        &lt;td valign="top" width="174"&gt;Soild&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;BorderWidth&lt;/td&gt;        &lt;td valign="top" width="361"&gt;边框宽度&lt;/td&gt;        &lt;td valign="top" width="174"&gt;0.5F&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;BorderColor&lt;/td&gt;        &lt;td valign="top" width="361"&gt;边框颜色&lt;/td&gt;        &lt;td valign="top" width="174"&gt;#000000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;ImageMode&lt;/td&gt;        &lt;td valign="top" width="361"&gt;图片读取模式,分为base64格式读取和文件路径读取&lt;/td&gt;        &lt;td valign="top" width="174"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="159"&gt;Src&lt;/td&gt;        &lt;td valign="top" width="361"&gt;图片文件路径&lt;/td&gt;        &lt;td valign="top" width="174"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;在实例中，有一个ImageMode属性，这个属性主要是区分Image的读取模式，如果是“1”则是通过路径来获取图片，如果是“2”则是通过base64string转化后读取图片。前者适合特殊图片生成时图片量较大的情况，后者适合单图片，并且图片量较小的情况。&lt;/p&gt;  &lt;p&gt;表的打印是比较复杂的，它的打印是有结构的，有纵向的和横向的区别。在表的最小元素即单元格的打印中，基本与文本（Label）打印方式相同。在表的格式中包含Column、Row、Cell三个标签，那么表的标签定义如表4：&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;表4 是报表文件中的Table标签定义&lt;/strong&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="695"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="115"&gt;说明&lt;/td&gt;        &lt;td valign="top" width="115"&gt;属性\标签&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Table&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Cell&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Column&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Row&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;唯一标示&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Id&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;起始原点横坐标&lt;/td&gt;        &lt;td valign="top" width="115"&gt;PositionX&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;起始原点纵坐标&lt;/td&gt;        &lt;td valign="top" width="115"&gt;PositionY&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;宽度&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Width&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;高度&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Height&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;边框样式&lt;/td&gt;        &lt;td valign="top" width="115"&gt;BorderStyle&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;边框宽度&lt;/td&gt;        &lt;td valign="top" width="115"&gt;BorderWidth&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;边框颜色&lt;/td&gt;        &lt;td valign="top" width="115"&gt;BorderColor&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;背景样式&lt;/td&gt;        &lt;td valign="top" width="115"&gt;BackStyle&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;背景颜色&lt;/td&gt;        &lt;td valign="top" width="115"&gt;BackColor&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;字体显示方向&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Alignment&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;边框形状&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Shape&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;文字显示模式&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Format&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;字体名称&lt;/td&gt;        &lt;td valign="top" width="115"&gt;FamliyName&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;字体Style&lt;/td&gt;        &lt;td valign="top" width="115"&gt;FontStyle&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;字体大小&lt;/td&gt;        &lt;td valign="top" width="115"&gt;FontSize&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;字体颜色&lt;/td&gt;        &lt;td valign="top" width="115"&gt;Color&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;打印内容Format&lt;/td&gt;        &lt;td valign="top" width="115"&gt;ViewFormat&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="115"&gt;合并单元格&lt;/td&gt;        &lt;td valign="top" width="115"&gt;ColSpan&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;√&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;        &lt;td valign="top" width="115"&gt;-&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;font color="#ff8000" size="6"&gt;&lt;strong&gt;结论&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;这个报表的设计结果可以满足基本的报表打印需求。&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:5c286bda-2a57-4140-8a38-3ce04e842d4d" &gt;标签: &lt;a href="http://www.cnblogs.com/waterlion/tag/%e6%8a%a5%e8%a1%a8" rel="tag"&gt;报表&lt;/a&gt;，&lt;a href="http://www.cnblogs.com/waterlion/tag/%e6%8a%a5%e8%a1%a8%e7%b3%bb%e7%bb%9f" rel="tag"&gt;报表系统&lt;/a&gt;，&lt;a href="http://www.cnblogs.com/waterlion/tag/aojreport" rel="tag"&gt;aojreport&lt;/a&gt;，&lt;a href="http://www.cnblogs.com/waterlion/tag/aojpaper" rel="tag"&gt;aojpaper&lt;/a&gt;，&lt;a href="http://www.cnblogs.com/waterlion/tag/aojlabel" rel="tag"&gt;aojlabel&lt;/a&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/waterlion/aggbug/1959237.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/waterlion/archive/2011/02/20/1959237.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2009/07/29/1534374.html</id><title type="text">[原创]从中文智能提示到表达式识别与计算</title><summary type="text">在此处我以表达式“3 + ( 4 * ( 1 + ( 1 + 2 ) ) ) * ( 1 + 2 ) ( 3 + 2 )”，虽然谈到是中文提示到这篇的，但是为了画图和解释方便，暂且用数字直接代替。事实上，中文表达式到具体的值只有一步而已，那就是识别=&gt;反射=&gt;读属性。通过上述表达式可以看出，一个表达式中有两个关键元素，即：操作符（operator）和操作数(operand).对于操作符而言，常见是分为一元和二元的，对于二元操作符自然是有2个操作数的，不同操作数之间类型的不同也导致了结果的输出的不同。还要考虑操作符的优先级顺序，因为在表达式中，优先级决定了谁优先计算，这步的实现直接导致了表达式表达意义的对与错。</summary><published>2009-07-29T10:23:00Z</published><updated>2009-07-29T10:23:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2009/07/29/1534374.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2009/07/29/1534374.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2009/07/29/1534074.html</id><title type="text">[原创]通过Attribute完成中文智能提示</title><summary type="text">在一些大型的桌面系统开发中，会重构出很多的基础控件。这些强大的基础控件，进而构造出非常复杂的画面，实际上这些画面也有很多的共性，所以又会抽出基础Form进行继承开发，减少开发业务的复杂度，提高了开发人员的开发效率。而在一般的大型项目中，会有专门的一块业务，作为”系统管理员”操作的部分。实际上这些”系统管理员”对编程和系统一窍不通，但是他们明白式样，明白简单的逻辑。所以为了提供给他们很好的去操作画面上的控件。提供了一个功能，就是在管理画面将这些控件用中文的形式显示出来，并且属性的访问也用中文的形式，这样他们就可以写出简单的逻辑去管理和维护业务画面。在这里我们就用到了Attribute的强大功能，去完成这个操作。比如：当前台画面上有检索部分和结果显示部分，这部分需要动态进行SQL拼接=&gt;</summary><published>2009-07-29T06:10:00Z</published><updated>2009-07-29T06:10:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2009/07/29/1534074.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2009/07/29/1534074.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/09/11/1289370.html</id><title type="text">2008年秋季程序员流行色之Visual studio黑色幽默</title><summary type="text">http://files.cnblogs.com/waterlion/Black.rar朋友给的</summary><published>2008-09-11T09:42:00Z</published><updated>2008-09-11T09:42:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/09/11/1289370.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/09/11/1289370.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/08/27/1277783.html</id><title type="text">[原创]动态编译自定义代码</title><summary type="text">由于园子里的朋友已经有过很多了，我在这里也算是老话重提，用一个比较简单的应用来阐述一下这个事。一方面这个用法在项目中应用到了，一方面也是一个知识的总结我们首先来理清一下我们要做的事情和思路我们要完成一段自定义代码的行为，这些应用有很多，而且可以解决许多别扭的问题，比方说计算器的表达式，由用户随意制定某Button的事件行为。[代码]那么要完成这样的东西我们需要什么呢？我们需要引用以下命名空间 Compiler提供了动态编译C#的处理，就像如下这样的代码[代码]那么我们的思路就出来了1． 做.NET前，首先要做的就是把必须要引用的DLL引用好嘛，动态编译类也不例外2． 我们首先需要将你的代码放入</summary><published>2008-08-27T08:02:00Z</published><updated>2008-08-27T08:02:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/08/27/1277783.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/08/27/1277783.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/08/26/1276789.html</id><title type="text">[资料收集]Attributes in C#</title><summary type="text">原文约定： 1.”attribute”和”attributes”均不翻译 2.”property”译为“属性” 3.msdn中的原句不翻译 4.”program entity”译为”语言元素”Attributes in C#介绍Attributes是一种新的描述信息，我们既可以使用attributes来定义设计期信息（例如 帮助文件，文档的URL），还可以用attributes定义运行时信息（例如，使XML中的元素与类的成员字段关联起来）。我们也可以用attributes来创建一个“自描述”的组件。在这篇指南中我们将明白怎么创建属性并将其绑定至各种语言元素上，另外我们怎样在运行时环境下获取到a</summary><published>2008-08-26T08:24:00Z</published><updated>2008-08-26T08:24:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/08/26/1276789.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/08/26/1276789.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/08/20/1272092.html</id><title type="text">[资料收集]Unicode编码问题，编程方面的技巧集合</title><summary type="text">Unicode编码问题，编程方面的技巧集合</summary><published>2008-08-20T03:56:00Z</published><updated>2008-08-20T03:56:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/08/20/1272092.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/08/20/1272092.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/08/13/1267222.html</id><title type="text">[小记]TFS看Team编辑状态的命令行</title><summary type="text">[代码]</summary><published>2008-08-13T10:44:00Z</published><updated>2008-08-13T10:44:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/08/13/1267222.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/08/13/1267222.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/06/03/1212855.html</id><title type="text">[日语]常用日语汇总（转）</title><summary type="text">（１）问候与客气こんにちは。 你好。こんばんは。 晚上好。おはようございます。 早上好。お休みなさい。 晚安。</summary><published>2008-06-03T07:27:00Z</published><updated>2008-06-03T07:27:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/06/03/1212855.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/06/03/1212855.html"/></entry><entry><id>http://www.cnblogs.com/waterlion/archive/2008/05/18/1201964.html</id><title type="text">[原创]Jquery下的表单验证(二)</title><summary type="text">这个版本的修改不大，主要是排除了一些BUG，并且增加了一些效果和功能1.错误信息在控件旁报错2.增加报错信息淡出的效果3.报错后焦点4.将对象选择器全替换成了Jquery的写法在这个版本的修改中，非常感谢网友海波的反馈和建议，非常感谢下载地址为:下载</summary><published>2008-05-18T05:22:00Z</published><updated>2008-05-18T05:22:00Z</updated><author><name>水随风</name><uri>http://www.cnblogs.com/waterlion/</uri></author><link rel="alternate" href="http://www.cnblogs.com/waterlion/archive/2008/05/18/1201964.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/waterlion/archive/2008/05/18/1201964.html"/></entry></feed>
