900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 纯JAVA代码利用DynamicReports插件生成动态报表

纯JAVA代码利用DynamicReports插件生成动态报表

时间:2019-03-22 08:32:25

相关推荐

纯JAVA代码利用DynamicReports插件生成动态报表

1.首先,我的目的是纯java项目连接SQL数据库,之后能够应客户需要打印出用户的近期10次的消费回单。

2.昨天想到用ireport+jasperreports生成报表,发现生成的是静态的报表,不具有实时性,不能满足要求。

3.今天看到jasperreports插件DynamicReports可以动态生成.pdf格式的报表,于是开始艰辛的探索:

(1)准备工作:

.去官网下载DynamicReports的包。我下载的好像是DynamicJasper-5.0.4-bundle解压之后里面有5个DynamicJasper的.jar文件。

.再去官网下载一个写有例程的压缩包,我是下载的dynamicreports-4.1.1-project-with-dependencies。里面的\lib路径里面的许多.jar文件很重要。

.再去下载一个jasperreports-6.3.0-project的压缩包。解压之后里面的\dist路径下有一个jasperreports-6.3.0(最新版本)的.jar文件。

(2)开始打开Eclipse新建一个JAVA工程。(注:前提是你要制作的表格的数据库已经建好。字段都已经无误)。

(3)现在进行一个至关重要的步骤:给该工程添加准备的一系列.jar文件。给工程添加包的步骤不在赘述,直接说添加哪些包:

DynamicJasper-5.0.4-bundle解压之后里面有5个DynamicJasper的.jar文件;

jasperreports-6.3.0-project的压缩包里面的jasperreports-6.3.0.jar;

dynamicreports-4.1.1-project-with-dependencies。里面的\lib路径里面的commons-collections-3.2.2.jar;

commons-digester-2.1.jar;commons-lang3-3.1.jar;commons-logging-1.1.1.jar;itext-2.1.7.js5.jar。

最后别忘了把你的SQL的驱动包加载到里面。最后包含的包如图所示:其中还有一个iTextAsian.jar包一会再说。

(4).贴上我的纯java代码:仅供参考。(注:大部分copy的别人的,但是有一部分我自己修改了)。

[java]view plaincopy<spanstyle="font-size:18px;color:#333333;">packagedynamicreports;importjava.awt.Color;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjavax.swing.JFrame;importnet.sf.dynamicreports.jasper.builder.JasperReportBuilder;importnet.sf.dynamicreports.report.builder.DynamicReports;importnet.sf.dynamicreports.report.builder.column.Columns;importnet.sf.dynamicreports.ponents;importnet.sf.dynamicreports.report.builder.datatype.DataTypes;importnet.sf.dynamicreports.report.builder.style.StyleBuilder;importnet.sf.dynamicreports.report.constant.HorizontalAlignment;importnet.sf.dynamicreports.report.constant.PageType;importnet.sf.dynamicreports.report.exception.DRException;importcom.lowagie.text.pdf.BaseFont;/****@ClassName:Reports*@Description:打印动态pdf报表*@author:Administrator*@date:12月30日下午8:01:09*/publicclassReports{publicstaticConnectiongetConn()throwsClassNotFoundException,SQLException{Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");return(Connection)DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=CardManagementSystem","Sa","Wang89918157");}@SuppressWarnings("deprecation")publicstaticvoidbuildReport(Connectionconn,StringsqlString){JasperReportBuilderreport=DynamicReports.report();//创建空报表//设置报表的一系列样式,stl是创建和自定义风格的一组方法StyleBuilderboldStl=DynamicReports.stl.style().bold();StyleBuilderboldCenteredStl=DynamicReports.stl.style(boldStl).setHorizontalAlignment(HorizontalAlignment.CENTER);;StyleBuildertitleStl=DynamicReports.stl.style(boldCenteredStl).setFontSize(16);StyleBuildercolumnTitleStl=DynamicReports.stl.style(boldCenteredStl).setBorder(DynamicReports.stl.pen1Point()).setBackgroundColor(Color.LIGHT_GRAY);//设置列名栏的背景颜色为灰色StyleBuilderfontStyleBuilder=DynamicReports.stl.style().setPadding(2).setPdfFontName("STSong-Light").setPdfEncoding("UniGB-UCS2-H").setPdfEmbedded(BaseFont.NOT_EMBEDDED);columnTitleStl.setPdfFontName("STSong-Light").setPdfEncoding("UniGB-UCS2-H").setPdfEmbedded(BaseFont.NOT_EMBEDDED);titleStl.setPdfFontName("STSong-Light").setPdfEncoding("UniGB-UCS2-H").setPdfEmbedded(BaseFont.NOT_EMBEDDED);report.setPageFormat(PageType.A5);//设置每一页的格式report.columns(Columns.column("操作日期","OperateTime",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER),Columns.column("用户姓名","CustomerName",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER),Columns.column("扣钱","Deductmoney",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER),Columns.column("存钱","Savemoney",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER),Columns.column("用户ID","CustomerID",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER),Columns.column("余额","CustomerMoney",DataTypes.stringType()).setHorizontalAlignment(HorizontalAlignment.CENTER)).setColumnStyle(fontStyleBuilder)//查询的数据的字体格式.setColumnTitleStyle(columnTitleStl)//设置列名的风格.setHighlightDetailEvenRows(true)//偶数行高亮显示.title(Components.text("客户消费单").setStyle(titleStl))//标题.pageFooter(Components.pageXofY().setStyle(boldCenteredStl))//页角.setDataSource("SELECT*FROMReportMessageWHEREOperateTimeCustomerID='"+sqlString+"'",conn);//数据源try{//显示报表report.show(false);//关闭预览窗口后不退出程序try{FileOutputStreamfileOutputStream=newFileOutputStream("D:/test.pdf");//构建一个pdf存放的输出位置report.toPdf(fileOutputStream);//打印的pdf地址try{fileOutputStream.flush();//保证pdf输出完毕fileOutputStream.close();}catch(IOExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}catch(FileNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}catch(DRExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}}</span>

(5)最后说一下的显示中文的时候的必须需要的两个.jar文件。一个是itext-2.1.7.js5.jar;还有一个是iTextAsian.jar文件。而且我输出的就是一个消费单表格,如果需要其他的报表功能,你需要添加你需要的另外一些.jar文件。

(6)我的pdf文件:

还有许多需要美化的地方。。。。水平就只能到这了。附上一些链接:

/qiuhan/article/details/42558811

/download/ssxueyi/4659874

/blog/1880534

这是我的毕业设计涉及到的一部分,想了解更多关于这个项目的资料,可以去我的github,有关于这个小项目的上位机和下位机的所有资料,附上链接:TeslaHua的Github

版权声明:本文为博主原创文章,未经博主允许。 /wang975380547/article/details/54287775

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。