Jaspersoft报表系统Crosstab动态自适应列宽解决方法
JasperReport+iReport高级报表设计实战
JasperReport+iReport高级报表设计实战序言一直以来,报表都是很多项目中一个重要的、不可获取的组成部分。
然而其复杂性和专业性又使得程序员不能够也没时间自己设计属于目前手头正在构建的系统的报表模块;即便设计来了又可能由于通用性等原因不能够应用到下一个系统当中,这就导致了报表类库/组件在市场上的火爆。
典型的例子就是水晶报表,几乎无处不在。
还有一些专门处理中国式报表的组件也陆续出现在软件市场上。
然而遗憾的是,他们中的绝大多数都是要收费的--这也无可厚非,毕竟人都是要生存的。
所以大多数预算不够充裕的程序员都将目光转向了开源软件,而JasperReport就将是第一个进入他们视线中的佼佼者。
然而代码开源不代表我们就可以大大方方的拿来就用了,人家的文档也是要收费的,所以市面上有关于JasperReport 的文档虽然也不少,但大多数都集中在简单应用和介绍基本操作的基础之上。
对于复杂的报表设计并不能提供良好的帮助。
本文将火力集中在相对复杂的报表设计(不包括图片和超连接等对办公系统或过程没有太大用途的页面元素),交叉表的生成等高级报表设计方案。
对于那些基本的操作则留给读者自行体会,相信可以为各位解决一些实际问题。
1 iReport概览 (4)2.1. 准备工作 (5)1.1.1 Database JDBC Connection Datasource. 51.1.2 JavaBean Set Datasource. 72 实战报表设计 (10)2.1 简单的复杂表头报表设计 (12)2.2 交叉表的设计 (13)2.2.1 利用iReport向导生成交叉表架构 (13)2.2.2 偷懒的解决方案 (16)3 结束语 (17)1 iReport概览JasperReport 是JasperSoft公司的一款开源的报表解决方案。
通过JasperReport,用户就可以方便的定制、设计、生成项目所需要的各种报表。
jaspersoft+iReport+Designer+4.5.0教程
.前.言..本教程所使用实例均来自jaspersoft iReport软件自带的Samples。
在开始本教程之前,请先运行Sample 数据库,如下图所示,相关案例也可在相应的菜单中点击打开。
软件安装,配置设置请见相关教程。
图 11.简单报表查询1.1新建报表依次单击“文件/New…”,弹出窗口如图1.1所示:图1. 1选择”Blank A4”,单击”Open this Template”,如图1.2所示:图1. 2在“Report Name”输入“SimpleReport”,依次单击“下一步/完成”,得到一个新的report,如图1.3所示:图1. 31.2设置数据集单击数据库链接按钮,弹出”Report query”窗口,本文将使用系统自带的HSQLDB数据库(如图1.4所示),在弹出窗口中输入查询语句,如图1.5和1.6所示。
图1. 4 图1. 5图1. 6单击”OK”按钮完成数据集设置。
1.3 Report设计①设置Title在主窗口的设计窗口开始设置。
首先从“组件面板”拖动一个”Static Text”控件到设计窗口的Title Band,并双击输入文字,如图1.7所示。
图1. 7②设置Detail从左侧导航面板“Report Inspectpr”的“Fields”中拖动要显示的属性字段到设计窗口的Detail Band,如图1.8所示。
图1. 8Detail Band中的字段在制成Report时将循环显示,而Column Header是列标题,只显示一行,本文不希望显示列标题,因此删除Column Header中的标签框。
调整Detail中的Text Field位置和大小,如图1.9所示:图1. 9③设置Page Rooter从组建面板中拖动“Pager number”和“Total pages”到设计面板的Page Rooter内,选中设计面板中的“Pager number”控件,如图1.10所示。
数据透析表的数据透视表列宽自适应技巧
数据透析表的数据透视表列宽自适应技巧在数据分析和报告中,透视表是一种十分有用的工具。
透视表可以将大量的数据整理成易于理解和分析的格式,使用户能够快速找到他们关心的信息。
然而,在创建透视表时,经常会遇到一个问题,那就是不同列宽度不一致导致的表格排版混乱的问题。
为了解决这个问题,我们将介绍一些在透视表中设置列宽自适应的技巧,使得透视表的输出更加美观和易读。
1. 通过手动调整列宽:透视表在默认情况下,列宽是根据表头和数据的长度来自适应的。
然而,为了确保每列的宽度适应数据的长度,可以采用手动调整列宽的方式。
只需将鼠标指针放在表头的边界线上,然后按住鼠标左键拖动调整列宽即可。
2. 使用自动调整列宽功能:Excel提供了一个方便的功能,即“自动调整列宽”。
在选中整个透视表之后,右键点击并选择“自动调整列宽”选项,Excel将根据数据的内容自动调整每个列的宽度。
这个功能在保留透视表结构的同时,使得每列的显示能够尽可能地充满整个表格。
3. 使用“填充”功能:当某些列的数据比其他列更长时,可以使用“填充”功能来调整列宽。
选中要调整的列,然后在“开始”选项卡中找到“填充”功能,点击并选择“向右填充”,Excel会自动调整所选列的宽度,使得每一列能够充满整个表格,保持整洁的外观。
4. 使用“文本换行”功能:当一列的文本非常长时,可以使用“文本换行”功能来使得文本在单元格内自动换行,而不会导致表格的宽度变得过宽。
选中要进行文本换行的列,然后在“开始”选项卡中找到“文本换行”功能,点击并选择“自动换行”,Excel会自动调整列宽,以适应文本的长度。
5. 调整页面布局:有时候透视表的列太多,无法一次性显示在一页上,导致每列的宽度过窄。
为了解决这个问题,可以调整页面的布局。
可以选择在“页面布局”选项卡中的“缩放”选项,调整透视表在一页上显示的比例。
适当缩小比例后,每一列将有更多的空间来展示数据,从而避免了列宽度过窄的问题。
6. 调整字体和字号:透视表的外观不仅仅取决于列宽度,还受到字体和字号的影响。
Delphi调整Dbgrid列宽
Delphi调整Dbgrid列宽DBGRID列宽怎么调?一、设置好你的dbgrid,显示数据后可做如下动作调节你的列宽:1.双击dbgrid,出现一个编辑框:EDITING DBGRID1.COLUNMS2.如果是空白的话,点击第三个图标: Add All Fields3.选择需要设置的行,在它的属性栏,直接设置他了WINDTH值为你想要的.二、DBGrid自动调整列宽function DBGridRecordSize(mColumn:TColumn):Boolean;{ 返回记录数据网格列显示最大宽度是否成功 }beginResult := False;if not Assigned(mColumn.Field) then Exit;mColumn.Field.Tag := Max(mColumn.Field.Tag,TDBGrid(mColumn.Grid).Canvas.TextWidth(mColumn.Field. DisplayText));Result := True;end; { DBGridRecordSize }function DBGridAutoSize(mDBGrid:TDBGrid; mOffset:Integer = 5):Boolean;{ 返回数据网格自动适应宽度是否成功 }varI:Integer;beginResult := False;if not Assigned(mDBGrid) then Exit;if not Assigned(mDBGrid.DataSource) then Exit;if not Assigned(mDBGrid.DataSource.DataSet) then Exit;if not mDBGrid.DataSource.DataSet.Active then Exit;for I := 0 to mDBGrid.Columns.Count - 1 dobeginif not mDBGrid.Columns[I].Visible then Continue;if Assigned(mDBGrid.Columns[I].Field) thenmDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,mDBGrid.Canvas.T extWidth(mDBGrid.Columns[I].Title.Capti on)) + mOffsetelsemDBGrid.Columns[I].Width :=mDBGrid.Canvas.T extWidth(mDBGrid.Columns[I].Title.Capti on) + mOffset;mDBGrid.Refresh;end;Result := True;end; { DBGridAutoSize }///////源代码结束///////使用示例开始procedure TForm1.DBGrid1DrawColumnCell(Sender:TObject; const Rect:TRect;DataCol:Integer; Column:TColumn; State:TGridDrawState);beginDBGridRecordSize(Column);end;procedure TForm1.Button1Click(Sender:TObject);beginDBGridAutoSize(DBGrid1);end;///////使用示例结束uses Math;三、在Delphi中用ini文件保存表格列宽用Delphi做数据库系统开发,免不了要在许多地方输出查询结果,而显示查询结果最经常使用的控件之一当属TDBGrid。
JasperReport框架使用教程(附带常见空白页问题说明)
JasperReport框架使⽤教程(附带常见空⽩页问题说明)概述与安装使⽤1. PDF报表概述概述在企业级应⽤开发中,报表⽣成、报表打印下载是其重要的⼀个环节。
在之前的课程中我们已经学习了报表中⽐较重要的⼀种:Excel报表。
其实除了Excel报表之外,PDF报表也有⼴泛的应⽤场景,例如货运详情,货运单等。
常见PDF报表的制作⽅式⽬前世⾯上⽐较流⾏的制作PDF报表的⼯具如下:1. iText PDF:iText是著名的开放项⽬,是⽤于⽣成PDF⽂档的⼀个java类库。
通过iText不仅可以⽣成PDF或rtf的⽂档,⽽且可以将XML、Html⽂件转化为PDF⽂件。
2. Openoffice:openoffice是开源软件且能在windows和linux平台下运⾏,可以灵活的将word或者Excel转化为PDF⽂档。
3. Jasper Report:是⼀个强⼤、灵活的报表⽣成⼯具,能够展⽰丰富的页⾯内容,并将之转换成PDFJasperReport框架的介绍JasperReport是⼀个强⼤、灵活的报表⽣成⼯具,能够展⽰丰富的页⾯内容,并将之转换成PDF,HTML,或者XML格式。
该库完全由Java 写成,可以⽤于在各种Java应⽤程序,包括J2EE,Web应⽤程序中⽣成动态内容。
只需要将JasperReport引⼊⼯程中即可完成PDF报表的编译、显⽰、输出等⼯作。
在开源的JAVA报表⼯具中,JASPER Report发展是⽐较好的,⽐⼀些商业的报表引擎做得还好,如⽀持了⼗字交叉报表、统计报表、图形报表,⽀持多种报表格式的输出,如PDF、RTF、XML、CSV、XHTML、TEXT、DOCX以及OpenOffice。
数据源⽀持更多,常⽤ JDBC SQL查询、XML⽂件、CSV⽂件、HQL(Hibernate查询),HBase,JAVA集合等。
还允许你义⾃⼰的数据源,通过JASPER⽂件及数据源,JASPER就能⽣成最终⽤户想要的⽂档格式。
JasperReport学习必备手册
JasperReport学习必备手册(小弟第一次发帖,好像用小字体才好看些,大家将就一下)这是我学习JasperReport的一点经验,欢迎大家指正、赐教,我只是起个砖块的作用,大家就接着抛玉吧,希望最后真的能累成一个必备手册,呵呵。
假设大家已经对JasperReport有一定的了解(至少知道大概的开发流程),这里就不赘述JasperReport的好处、设计、表达式的定义等JasperReport 自带文档里有的东西了。
可能因为我是java新手,所以遇到的问题特别多,下面仅列一些,并附上我的解决方法:Jsp生成不了 PDF的问题生成 HTML 时 JRHtmlExporterParameter.lMAGES_MAP 的问题中文显示的问题图片显示的实现方法(JFreeChart)我的通用.jasper生成方法我的项目的实现Jsp生成不了PDF的问题问题描述:运行自带的web(webapp目录下)例子时(我使用的服务器是TomCat),用Servlet生成PDF完全没问题,而JSP方式却报getOutputStream () has already been called forthis respons的令昔,看JSP源码发现和Servlet差不多。
问题原因:Tomcat首先执行.jsp文件开始的Java代码,然后准备session, out等变量。
而输出PDF的代码出现在.jsp文件开始的<% ... %>段中,这样HttpServerletResponse的getOutputStream()方法已被调用。
在JSP规范中定义此方法只能被调用一次,这样当Tomcat准备out变量时必然会出错。
所以基于TomCat的服务器都会出错,如Jboss?un ONE AppServer解决方法:很简单,按照JSP/Servlet规范定义输出非文本内容,如图片、声音等应该使用Servlet而不是JSP。
在Servlet中输出流完全由应用程序按需打开/关闭。
Win8下CPropertySheet变大的解释及解决方法
Win8下CPropertySheet变大的解释及解决方法文章一最近对新做的系统在各种不同操作系统环境下测试,发现在XP和WIN7下都正常,但在WIN8下出现问题,其中一个界面中的TAB窗口内容超出了父窗口的区域,导致部分界面无法操作。
相当的郁闷,检查系统其它TAB 界面无此问题。
没有办法,检查代码,发现该TAB窗口不是CTabCtrl,而是属性页。
属性页是个倒霉孩子,它的各个Page 资源设定的字体不起作用,加入sheet后,不知道sheet封装的什么鬼东西,居然不安预先设定的字体进行显示。
惯例,我对此不进行研究,只做猜测。
那么很可能sheet内部封装了一个用于定义大小的单位,它会将所有的Page 调整到正好能显示在sheet范围内,因此,在XP和WIN7下,即使你设计Page资源时,界面大小比父窗口的空白区域大得多,它也能够显示完整,只不过其中的各个控件大小都发生了变化。
但是在WIN8下,这一切就不成立了,估计是sheet内部使用的字体什么的不存在了,所以自动使用了默认字体,导致整个自动调整机制出现问题了。
以上均属猜测,没有找到证据。
有待有心者给以证实,或给明原因。
没有办法,淘汰属性页,全部使用TAB控件改之,一劳永逸啊。
文章二MFC 的颜色对话框的下半部分将被截断,当您在Windows 8 或Windows8.1 中的MFC 应用程序中使用CMFCColorDialog 类•Email•Print重要说明:本文是由Microsoft 机器翻译软件进行的翻译并可能由Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。
Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。
翻译的文章可能存在词汇、句法和/或语法方面的错误。
Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。
el-table单元格自适应宽度
el-table单元格自适应宽度eltable是一个基于Element UI的表格组件,它提供了丰富的功能和灵活的配置选项,帮助开发者轻松实现各种复杂的数据展示需求。
其中,自适应单元格宽度是一个常见的需求,本文将为大家详细介绍如何实现eltable单元格的自适应宽度。
一、了解eltable组件的基本结构和属性在开始自适应单元格宽度的实现之前,我们首先需要了解eltable 组件的基本结构和属性。
eltable组件是由el-table和el-table-column组成的,其中el-table是表格的外层容器,el-table-column则定义了表格中每一列的具体内容和样式。
根据eltable的文档,我们可以设定el-table-column的width 属性来设置单元格的固定宽度,也可以不设定width属性,让单元格自适应宽度。
在本文中,我们将着重探讨如何让单元格自适应宽度。
二、使用CSS实现单元格自适应宽度使用CSS实现单元格自适应宽度的方法相对简单,我们可以使用CSS的百分比单位来设置单元格宽度,让其相对于父容器宽度进行自适应调整。
1. 设置表格容器的宽度首先,我们需要给el-table组件的外层容器设置一个固定宽度,这样才能让el-table的内部内容在这个宽度范围内进行自适应调整。
html<el-table :data="tableData" style="width: 1000px">在上述代码中,我们设置了表格容器的宽度为1000px,你可以根据实际需求进行调整。
2. 设置单元格的宽度接下来,我们需要设置el-table-column的宽度为百分比单位,这样单元格的宽度将会相对于表格容器进行自适应调整。
html<el-table-column prop="name" label="姓名" width="25"> 在上述代码中,我们设置了name列的宽度为25,这意味着该列的宽度将在表格容器的宽度基础上占25。
帆软公式设置列宽
帆软公式设置列宽摘要:1.帆软公式简介2.设置列宽的重要性3.列宽设置方法一:手动拖拽4.列宽设置方法二:使用公式5.列宽设置方法三:利用函数6.总结与建议正文:帆软公式是一款非常实用的工具,它可以帮助用户在表格中快速地完成各种复杂的计算。
然而,在实际使用过程中,如果列宽设置不当,可能会影响到公式的准确性和可读性。
本文将详细介绍如何在帆软公式中设置列宽,以提高工作效率和表格的美观度。
首先,我们需要了解设置列宽的重要性。
在帆软公式中,列宽的设置直接关系到公式的显示效果。
如果列宽过窄,可能导致公式中的数字或字符相互重叠,影响阅读;而如果列宽过宽,则会导致表格整体显得过于稀疏,浪费空间。
因此,合理设置列宽对于提高表格的观感和使用体验具有重要意义。
接下来,我们将介绍三种设置列宽的方法。
第一种方法是手动拖拽。
在表格视图中,用户可以直接用鼠标拖动表格边框,以调整列宽。
这种方法简单易用,但精确度相对较低,适用于对列宽要求不高的场景。
第二种方法是使用公式。
在公式视图中,用户可以通过设置单元格的宽度来调整列宽。
例如,如果A1单元格的宽度为20,则可以使用以下公式来设置列宽:`=A1.Width`。
通过调整Width的值,用户可以实现对列宽的精确控制。
第三种方法是利用函数。
帆软公式提供了一系列与列宽相关的函数,如ColumnWidth、RowHeight等。
用户可以通过这些函数来设置列宽。
例如,使用`=ColumnWidth(1, 20)`可以设置第一列的宽度为20。
总之,在帆软公式中设置列宽有多种方法,用户可以根据自己的需求和喜好选择合适的方法。
在使用过程中,我们还应注意对列宽进行适当的调整,以达到最佳的显示效果。
最后,建议用户在设置列宽时要考虑到公式的复杂性和表格的整体美观度,避免列宽设置过于随意。
数据透视表更新时自动调整列宽的方法
标题:数据透视表更新时自动调整列宽的方法在数据分析和报告中,数据透视表是一种非常有用的工具。
它可以帮助我们在Excel中对大量数据进行汇总和分析,并且在数据更新时自动调整列宽,使得数据显示更加清晰和美观。
本文将介绍数据透视表更新时自动调整列宽的方法,帮助你更高效地进行数据分析和报告撰写。
1. 了解数据透视表的基本原理数据透视表是一种通过透视表字段、列字段、值字段和过滤字段进行数据汇总的功能。
在Excel中,我们可以通过拖拽字段来构建数据透视表,然后根据需要对数据进行透视分析。
而在数据更新时,由于透视表的灵活性,往往会导致列宽需要自动调整的情况。
2. 设置数据透视表的自动更新选项在Excel中,我们可以设置数据透视表在数据更新时自动进行更新和调整列宽。
具体方法是在数据透视表的选项中,找到“数据”选项卡,然后点击“刷新所有”,再勾选“在刷新后调整列宽”选项。
这样就可以保证数据更新时列宽会自动进行调整。
3. 使用宏实现自动调整列宽除了设置数据透视表的自动更新选项外,我们还可以通过编写宏来实现自动调整列宽。
具体方法是打开Excel的VBA编辑器,编写一个宏,其中包括对数据透视表的刷新和列宽调整操作。
然后可以将这个宏与数据透视表的刷新事件进行关联,从而实现数据更新时自动调整列宽。
4. 建立格式模板来统一列宽另外,我们还可以通过建立格式模板的方式来统一数据透视表的列宽。
具体方法是在数据透视表完成布局和格式设置后,将其另存为一个模板文件。
当需要更新数据时,我们可以直接应用这个格式模板,从而保证列宽能够自动进行调整。
总结回顾通过以上方法,我们可以在数据透视表更新时实现自动调整列宽,从而使得数据显示更加清晰和美观。
可以设置数据透视表的自动更新选项、使用宏实现自动调整列宽,或者建立格式模板来统一列宽。
这些方法都可以大大提高我们在数据分析和报告中的效率。
个人观点和理解对于数据透视表的使用,我个人认为自动调整列宽是非常重要的,因为这可以使得数据更加清晰地呈现在报告中,提高报告的美观度和可读性。
关于报表展示宽度问题
一、Auto Layout模式(自适应布局)
在制作报表文件时,选择报表窗体,在综合设置中(General)选项中选择
General —Layout Preference 中选择Auto Layout模式,可根据列表展示的长度字段扩展。
如下图:
设计器:
展示项已经超出刻度尺的宽度。
修改宽度按照列表展示宽度自适应
展示部分:
列表中可以看到全部的展示信息。
二、Fixed Layout(固定布局)
在制作报表文件时,选择报表窗体,在综合设置中(General)选项中选择
General —Layout Preference 中选择Fixed Layout模式,可根据列表展示的长度字段扩展。
如下图:
设计器:
展示项已经超出刻度尺的宽度。
修改宽度按照列表展示固定宽度
展示部分:
列表中只可看到设计器中标尺刻度的最大宽度的展示项。
JasperReport报表开发之转置交叉表
JasperReport报表开发之转置交叉表使⽤Jasper或BIRT等报表⼯具时,常会碰到⼀些很规的统计,⽤报表⼯具本⾝或SQL都难以处理,⽐⽅源数据不符合交叉表的要求,须要转置后再呈现。
集算器具有结构化强计算引擎,集成简单。
能够协助报表⼯具⽅便地实现此类需求。
以下通过⼀个样例来说明转置交叉表的实现过程。
数据库表booking汇总着各年度商品的预定数据。
有四个字段,包含年份和三种预定状态,部分数据例如以下:报表要求呈现指定年份及上⼀年的预定情况。
当中⾏组有三项,即三种预定状态,列组是年份。
測度是当年的预定数据。
此外要汇总出指定年份各预定状态的增长率。
表例⼦如以下:能够看到,这张报表的难点是:源数据⽆法直接⽤于交叉表,汇总列要⽤相对位置来动态计算。
假设能将源数据转置。
并将汇总列事先计算出来,则会显著减少难度,⽐⽅以下这样:以下⽤集算器准备报表所需的数据,代码例如以下:A1=yearBegin=yearEnd-1yearEnd是来⾃报表的參数,表⽰⽤户指定的年份,⽐⽅2014。
A1中的代码⽤来计算上⼀年(⽐⽅2013),为了⽅便引⽤,上⼀年定义为yearBegin。
A2=myDB1.query(“select * from booking where year between ? and ?order by year desc”,yearBegin,yearEnd)这句代码⽤来从数据库查出指定年份及上⼀年的数据。
myDB1是数据源名,指向MYSQL。
函数query可运⾏SQL语句,也能够接受參数。
如果yearEnd=2014,则A2的计算例如以下:A3=create(row,col,value)这句代码⽤来新建序表A3。
A3有三个字段:row、col、value,将来可存储整理之后的数据。
新建后的A3例如以下:须要注意的是。
序表类似数据库结果集,也是结构化⼆维表。
但序表是泛型的,同⼀个字段能够存储不同的数据类型,序表也是有序的,能够按序号訪问数据。
帆软公式设置列宽
帆软公式设置列宽
(实用版)
目录
1.帆软公式的概述
2.设置列宽的方法
3.设置列宽的注意事项
正文
【帆软公式的概述】
帆软公式是一款功能强大的表格处理软件,它可以帮助用户轻松地完成各种复杂的数据分析和处理任务。
在帆软公式中,用户可以自定义公式,以满足不同的数据处理需求。
为了更好地展示和应用公式,我们需要对公式的列宽进行设置。
【设置列宽的方法】
在帆软公式中,设置列宽的方法非常简单。
以下是具体操作步骤:
1.打开帆软公式软件,找到需要设置列宽的表格。
2.选中需要调整列宽的列。
如果需要同时调整多列的列宽,可以按住Ctrl 键依次选中这些列。
3.在顶部菜单栏中找到“格式”选项,点击进入。
4.在“格式”菜单中找到“列宽”选项,点击并选择“自定义列宽”。
5.鼠标会变成一个双向箭头,拖动箭头可以调整列宽。
如果想同时调整多列的列宽,可以按住 Shift 键依次拖动鼠标。
6.调整好列宽后,点击“确定”按钮,完成设置。
【设置列宽的注意事项】
在设置帆软公式中列宽时,需要注意以下几点:
1.列宽的设置要适中,不宜过宽或过窄。
过宽的列宽会导致表格显示不完整,而过窄的列宽则会影响阅读和编辑。
2.在设置列宽时,要注意保持列之间的间距合适,以便于阅读和操作。
3.如果需要经常调整列宽,建议将列宽设置为“自动适应内容”,这样可以让表格根据内容自动调整列宽。
rdlc动态加载xml实现图表宽度(高度)自适应
Rdlc 动态加载xml 实现图表宽度(高度)自适应Rdlc 动态加载xml 实现图表宽度(高度)自适应2011-07-23 10:28bymr.张,442visits,收藏,编辑微软提供的Rdlc 报表为我们提供的很大的便利,功能强大,使用简单。
但在使用过程中总是有那么点美中不足:图表大小是固定的,不能根据内容自适应大小。
这就造成了如下情况,看图说话:数据少时图表比较稀疏数据多时图表很挤这对于我们追求完美的程序员来说是不能接收的,坚决要改造。
思路:Rdlc 是基于xml的,我们可以通过动态修改rdlc的xml数据,来更改rdlc 定义的图表大小。
宽度的计算:类别总数*序列数*(条形单位宽度+类别间隔)宽度计算根据图表的类型不同计算公式也不同,上述公式只适合"简单柱形图""简单条形图",其它类型的图表以后解决。
Rdlc报表xml解析:这里我们只需要动态改变图表的宽度和高度,需要知道如下几个节点:<Chart Name="chart1"> 中间数据省略</Chart> xpath 路径为: Report/Body/ ReportItems/ ChartChart的类型Type节点: <Chart><Type>Column</Type> </Chart> 其中Type为Column 代表简单柱形图,Type 为Bar 代表简单条形图Chart的宽度Width 节点: <Chart><Width>23cm</Width> </Chart>Chart的高度Height 节点: <Chart><Height>11.5cm</Height> </Chart>部分代码:public class RdlcReportHelper{private XmlDocument _rdlcDoc;private XmlNode _root;private string _chartName;private double _perWidth = 0.15; //厘米private XPathDocument xpathdoc;private XPathNavigator xnv;private XmlNamespaceManager xnm;private string[] _chartType = new string[] { "Bar", "Column" };public RdlcReportHelper(string path){//加载xml_rdlcDoc = new XmlDocument();_rdlcDoc.Load(path);_root = _stChild;xnm = newXmlNamespaceManager(_Table);xnm.AddNamespace("rd","/SQLServer/reporting/report designer");xnm.AddNamespace("default","/sqlserver/reporting/2005/01 /reportdefinition");xnm.PushScope();xpathdoc = new XPathDocument(path);xnv = xpathdoc.CreateNavigator();}/// <summary>/// 转换xml/// </summary>/// <returns></returns>public MemoryStream AutoSizeReport(){…………XmlNode ChartNode =_root.SelectSingleNode("//default:Body/default:ReportItem s/default:Chart[@Name='" + _chartName + "']", xnm); //查找Chart 节点XmlNode ChartTypeNode =ChartNode.SelectSingleNode("default:Type", xnm); //查找图表类型节点if (w != 0){if (ChartTypeNode.InnerText == "Bar"){XmlNode heightNode =ChartNode.SelectSingleNode("default:Height", xnm); //设置高度heightNode.InnerText = w + "cm";}else if (ChartTypeNode.InnerText == "Column"){XmlNode widthNode =ChartNode.SelectSingleNode("default:Width", xnm); //设置宽度widthNode.InnerText = w + "cm";}}}}如何使用:使用设计器设计好报表,设置要自动伸展的图表名称,类别字段、序列字段、值字段和单位宽度。
表格列宽自适应规则
表格列宽自适应规则全文共四篇示例,供读者参考第一篇示例:表格是我们日常工作或学习中常用的一种展示数据的形式,但是对于表格列宽的设置往往是一个让人头疼的问题。
有时候我们的表格内容可能过长,导致文字溢出列宽,这不仅让表格看起来不美观,还会影响数据的展示效果。
制作一个表格时必须要考虑到表格列宽的自适应规则,让表格内容能够完整显示,同时保持整体美观。
一、为什么表格列宽会出现溢出的问题?在制作表格的过程中,我们往往会设置表格的列宽,但是有时候我们的表格内容可能会超出列宽限制,导致文字溢出。
这主要是因为表格的内容不是单一类型的,例如有文字、数字、图片等不同类型的数据,它们的长度和宽度都不相同。
如果我们在设计表格时没有考虑到这些因素,很容易出现数据溢出列宽的情况。
二、表格列宽自适应规则为了解决表格列宽溢出的问题,我们可以根据以下几个规则来设置表格列宽,保证表格内容能够完整显示,同时保持整体美观:1. 文字内容自动换行:对于文字类型的数据,可以设置为自动换行,让文字按照列宽自动调整折行。
这样既可以完整显示文字内容,又不会导致文字溢出列宽。
2. 数字和图片宽度固定:对于数字和图片类型的数据,可以固定宽度,保证数据能够完整显示,并且不会影响其他列的宽度。
3. 等比例调整列宽:当表格中有多列数据时,可以根据每列数据的长度和宽度进行等比例调整,保证整体美观和数据完整显示。
4. 考虑列宽限制:在设置表格列宽时,一定要考虑到列宽的限制,不要设置过窄的列宽,导致数据溢出。
四、总结表格列宽自适应规则是制作表格时必须要考虑的一个重要问题,能够帮助我们更好地展示数据,保持表格的整体美观。
通过合理设置表格列宽,我们可以避免数据溢出列宽的情况,同时保证数据能够完整显示。
在实际制作表格时,我们可以根据表格内容的不同选择合适的列宽,随时调整列宽,注意数据长度和宽度,以及多样化的数据展示方式,来保证表格的内容能够清晰、完整地呈现出来。
希望以上内容能够帮助大家更好地应用表格列宽自适应规则,制作出更加美观和实用的表格。
DELPHI 表格控件DBGridEh全属性设置详解 最全的属性设置说明
DELPHI 表格控件DBGridEh属性设置详解----白波九道-----Allowedoperations[alopInsertEh,alopUpdateE h,alopDeleteEh,alopAppen dEh]允许操作类型:插入、更新、删除、追加Allowedselections[gstRecordBookmarks,gst Rectangle,gstColumns,gst All] gstRecordBookmarks:书签选中行 gstRectangle :区域选择 gstColumns :列选择 gstAll :所有AutoFitColWidths以自动重置列宽来设置网格的宽度等于客户区宽度AlwaysShowEditBu tton列显示下拉编辑按钮 AutoDropDown 自动下拉框DblClickNextVal 双击单元格为下一个值,数值为加1,列表下下一个 DropDownShowTitl es下拉框显示标题 DropDownSizing 下拉框可否手动调整大小 EndEllipsis 列内容显示不全的显示省略号 [Footer].Tooltips 底栏是否显示提示 HighLightRequired Layout内容位置 Alignment 标题对齐方式 Color 标题颜色EndEllipsis 标题过长用省略号结束 Orientation 标题文字方向 TitleButton 是否显示标题按钮 TitleTooltips 标题是否显示提示 ColumnDefValuesEh (列缺省值)Tooltips是否显示提示Columns[index]/Columns[ColumnName] 列对象,可用索引和名称调用 ColumnsOptimizeWidth根据内容自动调整列宽 Constraints 控件尺寸约束规定 ContraColCount 右侧锁定列 Ctl3D 3d 风格显示 Cursor显示鼠标指针样式 Active 激活数据分组 Color汇总行颜色DefaultStateExpand ed 默认显示是否为为全展开 Font 汇总行字体显示选项DataGrouping(数据分组设置) 表格中显示如EXCEL 中的分类汇总效果须加 MemT ableEh DataSetDriverEh,GroupLevels分组的级数如先按国别分组再按城市分GroupPanelVisible是否显示顶部的分组图示面板 ParentColor 使用父件颜色设置 Uses 添加EhLibMTE ParentFont 使用父件字体设置 AutoEdit自动提交表格修改到数据源 Dataset 数据集选项 Enabled 启用数据源 Datasoure (数据源设置) Tag 数据源标记(LongInt)DefaultDrawing 使用缺省的方式绘制表格,如为FALSE 须 OnDrawDataCell 事件中提供自己的例程 DrawGraphicDataDrawMemoText显示文本式备注字段EditActions[geaCutEh,geaCopyEh,gea PasteEh,geaDeleteEh,geaS electAllEh] 编辑属性,设置是否可以剪切、复制、粘贴、删除、选择 sebshowOnlyforCur Celleh只在当前单元格显示 sebshowOnlyforCur Roweh只在当前行显示 sebshowOnlyWhen GridActiveEh 当表格激活时显示EditButtonShowOptio ns(编辑按钮显示选项)sebshowOnlyWhen DataEditingEh当单元格进入编辑状态时显示 EvenRowColor 偶数行颜色FixedColor 固定区域颜色(如表头列头) Flat 平面显示效果(标题行渐变色须启用) Font 字体设置选项 FooterColor 底栏颜色 FooterFont 底栏字体设置 FooterRowCount 底栏行数 FrozenCols左侧冻结列数 ExtScrollBarSmoothStep True 平滑滚动/False 按列滚动 Tracking True 跟踪显示/Fasle 松开后显示 HorzScrollBar (水平滚动条设置) Visible 是否显示 Imemode 输入法模式选项 ImeName输入法 gioShowRowIndicatorEh 显示行指针 gioShowRecNoEh 显示行号 IndicatorOption (行首指示选项)gioShowRowselCheckbox esEh显示行选择框 IndicatorTitle (行道指示标题)DropdownMenupmNoVisibleCols/ PopupMenu1表头下拉菜单样式ShowDropdownSign显示下拉箭头图案 TitleButton 按钮是否启用 UseGlobalMenu用全局菜单 Left左端位置 MinAutoFitWidth 自适应宽度最小值 Name 控件名称 OddRowColor奇数行颜色 dgEdit能否编辑,dgAlwaysShowEditor 总是显示编辑项,选中时单击单元格直接进入编辑状态,否则双击进入编辑状态 dgTitles 显示列标题 dgIndicator 显示行首指针dgColumnResize 可否调整列宽 dgColLines 显示列线 dgRowLines 显示行线dgTabs 接收TAB 键移动到下一单元格 dgRowSelect整行选择 dgAlwaysShowSelection 显示选择区域 dgConfirmDelete 删除时确认 dgCancelOnExitOptions(表格通用选项)dgMultiSelect 可多行选择dghFixed3D 固定区(表头列头)3D 效果(渐变色须启用) dghFrozen3D 冷区3D 效果 dghFooter3D 栏底3D 效果 dghData3D数据区3D 效果 dghResizeWholeRightPartdghHighlightFocus 高光选择焦点dghClearSelection 移到下一个单元时是否清除已选记录 dghFitRowHeightToText 按文本适应行高 dghAutoSortMarking 自动排序 dghMultiSortMarking 多级排序 dghEnterAsTab 回车键作为TAB dghTraceColSizing 移动列宽时动态显示内容dghIncSearch允许在数据网格中进行增量搜索 Ctrl+F - 开始增量搜索。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Jaspersoft报表系统Crosstab动态自适应列宽解决方法
作者:潘庆和
来源:《电脑知识与技术》2018年第28期
摘要:Jaspersoft Studio是一款优秀的可视化报表构建系统,提供了各种报表元素,可以很方便地设计出各类企业所需的报表。
Crosstab又称交叉报表,是一种常用的报表形式,但在Jaspersoft Studio中只能对Crosstab的列宽进行静态的属性设置,导致展示时样式不够美观和清晰。
该文给出了一种通过编程方式动态设定列宽的解决方案,可以有效地解决这个问题,通过一个化肥生产系统的在线报表打印实例演示了该方案的使用效果。
关键词:Jaspersoft Studio系统;交叉报表;动态列宽
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)28-0260-02
A Method for Dynamically Setting Column Width of Crosstab in Jaspersoft Studio
PAN Qing-he
(School of Computer and Information Engineering, Harbin University of Commerce,Harbin 150028, China)
Abstract: Jaspersoft Studio is an excellent visual report building system that provides a variety of reporting elements that make it easy to design reports for all types of businesses. Crosstab is a commonly used report, but in Jaspersoft Studio the column width of Crosstab can only be set statically, which makes the presentation style not beautiful and unclear. This paper presents a solution to dynamically set the column width by programming, which can effectively solve this problem. The use of this method is demonstrated by an online report printing example of a fertilizer production system.
Key words:jaspersoft studio; crosstab; dynamic column width
1 背景
Jaspersoft Studio[1]是一款优秀的报表设计工具,使用该工具可以通过可视化的方式快速设计出所需形式的报表。
该工具提供了丰富的报表组件和属性设置能力,生成的jrxml文件报表模板可配合各种Java Web框架使用,比如流行的Spring MVC[2],由服务端计算和提供数据,再根据相应的报表模板渲染和展示。
但遇到较为复杂的业务需求时,只通过静态属性设置方式
设计报表的方式是难以满足要求的。
比如Crosstab这种常用的交叉报表,在有些场景下展示列的数量是变化的,使用静态方式设置列宽时,可能或者因为宽度设置太大导致显示内容超出边界,或者设置的太小导致显示内容拥挤在一起,设计出的报表既不美观清晰,也不标准,难以满足企业的要求。
针对这种情况,该文提出了一种Crosstab动态自适应列宽解决方法,并以实际设计的某化肥生产公司生产子系统的在线报表打印输出功能为例,给出了使用的流程。
2 当前存在问题
目前基于Crosstab进行设计时,展示的列宽需要设为固定值,尽管在多数情况下能够满足要求,但在有些需求下则会出现问题。
比如在化肥生产原料统计表的Crosstab设计中,需要使用列来显示车间已经产出的化肥产品,每行表示某种原料在相应产品中的用量,最右列对每种原料的投入量进行累计。
通过该表可以清楚地看出,一段时间内总共生产了多少产品,总共使用了多少原料,每种产品使用的各原料数量等等。
一般考察生产情况时需要按时间段来查询,每个时间段内的产品数量是不同的,而且时间段越大,可能生产的产品数就越多,所以报表中列的数量是可变的。
但Jaspersoft Studio中对Crosstab的列宽度属性设置是静态的,为了处理
列数变化的情况,需要根据经验将列宽设定一个较为合适的数值,比如该文示例中所使用的30px的列宽,以适应未来列数增多的情况。
按此种方式设置列宽,在使用时报表输出效果如
下例所示。
为了保护企业生产信息,截图对品名和原料名都做了模糊处理。
比如查询2017-11-01至2017-11-10這段时间的数据,显示效果如下图1所示。
这段时间
只生产了一种产品;2017-11-01至2017-11-20为时间段再次查询,可以看到生产了两种产品,如图2所示。
尽管能够正确地展示产品信息,但可以看出作为企业报表,这种表格形式既不美观,也不规范,右侧有大量的空白空间,而且因为列宽固定,导致品名较长时,单元格的高度被拉高。
因此,能否以自适应地方式,根据产品数量自适应地动态设置Crosstab的列宽,是一个值得研究的问题。
当前研究的情况是:1)使用Jaspersoft Studio是难以做到动态设置列宽的。
Jaspersoft Studio进行Crosstab属性设定后,会生成jrxml文件,因为jrxml就是普通的xml文
该文件,在渲染报表时只能按照文件既定格式展示内容;2)使用Jaspersoft提供的类方法去实现。
这需要较为繁琐的编程,需要对Jaspersoft所封装的报表和组件类及其包含的方法十分熟悉。
针对这种情况,该文提供了一种简单方式:先使用Jaspersoft Studio进行Crosstab的属性
设置,生成模板形式的jrxml文件,然后在渲染生成报表前,通过分析jrxml文件,利用Java[3]编程的方式对关键的列宽字段进行匹配和替换,生成新的jrxml文件,最后对新的文件渲染和展示。
这种方式在保持Jaspersoft Studio高效设计的同时,只使用了简单的字符串替换方式就实现了自适应动态列宽设置这个问题。
下面给出具体的实现方案。
3 解决方案
3.1 方案流程图
在Crosstab生成的jrxml文件中可以找到列宽度相应的属性,如下图3中的width=“30”,这是在Jaspersoft Studio中设定的静态值,当前jrxml文件中的其他列宽也都是这个固定值。
为了按照动态列宽的方式设定,可以在渲染之前,使用后台提供的具体数据动态地计算列宽值,重新生成该文件,再进行渲染和展示。
流程图如图4所示。
3.2 流程实现代码
下图5是完成上述流程的代码,其中注释中的序号对应流程图中的序号。
整型量columnCnt表示当前报表的列数,由服务器返回。
其中数字“780”是根据显示器的宽度设置的,可根据实际情况调整。
4 运行实例
针对图1和图2中的情况,实施动态列宽设定方法后,展示的效果分别如图6和图7所示。
可以看出,报表的整体宽度固定,且根据所显示的列数,各列宽都进行了动态地自适应调整。
这样更为标准和美观,实际使用中满足了企业的需求。
下图8给出了2017-11-01至2018-02-20时间段内的产品生产情况,为包含了11种产品的交叉报表,可见对于更多的列该方法也可满足要求。
5 结束语
该文设计了一种Crosstab动态列宽解决方法,并在实际应用中取得了较好的效果。
该方法简单易行,可为使用Jaspersoft Studio设计报表的程序员提供参考。
目前列数动态调整时产品名和原料名的字号没有改变,下一步考虑将字号的大小也设为动态调整,达到更好的显示效果。
参考文献:
[1] TIBCO Software Inc. TIBCO Jaspersoft Studio User Guide [EB/OL]. https:
///documentation/v710/tibco-jaspersoft-studio-user-guide.
[2] Amuthan Ganeshan. Spring MVC Beginners Guide[M]. USA: Packt Publishing, 2016:9-35.
[3] Benjamin J. Evans and David Flanagan. Java in a Nutshell[M]. USA:O’Reilly Media,Inc, 2015: 289-304.
【通聯编辑:谢媛媛】。