标签:jdb localhost return nts long exception boa Servle flag
我们上一次成功的利用iReport工具制作了一张报表,并且预览了报表最后的效果,也生成了格式为“jrpxml”、“jrxml”与“jasper”的文件。这次,我们使用jasper提供的java的api去利用在iReport中制作的报表jasper文件来生成真正的报表文件。
本文以生成pdf格式的报表文件为例,该报表文件包含所有男用户的信息。
首先我们打开MyEclipse,在其中创建一个java工程:
新建一个lib文件夹,然后在lib中加入我们准备好的jar包:
然后将这些jar包全部添加到环境中(右键build path)
然后编写获取数据库连接的类,用于连接数据库并获取相应连接对象,以便于后期操作数据库:
接下来编写dataSource类(也就是数据填充类),实现JRDataSource接口,通过放在list里面的Map对象迭代实现数据对应:
接下来实现上个类中的DateSourceBaseFactory(提供数据的数据源工厂),它是实际从数据库中取出相应数据,然后将其封装在map中,然后又将相应的map装在List容器中。
接下来编写dataSource的javaBean类。用于创建模板
接下来是重头戏,编写测试入口类,生成pdf文件。JasperFillManager中有多个生成文件的方法
,除了可以生成pdf文件外还可以生成ofice文档文件。这里我们就将取出的数据打印到报表中去:
我们点击右键“Run JavaAppliacrion”,来执行我们的报表生成样例。
运行结果,我们在F盘下的Temp下发现了新生成的pdf文件:
双击打开,就是我们之前需要的数据的报表信息。
注意:报表Pdf时,会出现中文无法显示问题,可以设置相关组件的以下属性。需同时设置,其他字体,可自行尝试。
1、Font name :宋体
2、pdf Font name is now deprecated:STSong-Light
3、pdf Encoding : UniGB-UCS2-H(China Simplified)
至此我们实现了使用jasper提供的java的api来实现封装数据打印报表的功能。
直接在网页上下载这个PDF格式文件
/**
* 输出jasper 报表
*
* @param reportHanderImpi
* @throws AppException
*/
public void exportReport(ReportHanderImpl reportHanderImpl)
throws AppException {
this.getRequest().setAttribute(ReportConstants.REPORT_FLAG, "0");
this.getRequest().setAttribute(ReportConstants.REPORT_PATH_SYMBOL,
reportHanderImpl.getReportFile());
if(reportHanderImpl instanceof CommonReportHandler){
// 报表文件的输入流
this.getRequest().setAttribute(ReportConstants.REPORT_INPUTSTREAM,
((CommonReportHandler)reportHanderImpl).getReportInputStream());
}
List datalist = reportHanderImpl.getDataList();
JRDataSource dataSource = null;
if (datalist != null && datalist.size()>0) {
dataSource = new JRBeanCollectionDataSource(datalist);// 获取数据集
} else {
dataSource = new JREmptyDataSource();
}
this.getRequest().setAttribute(
ReportConstants.REPORT_DATASOURCE_SYMBOL, dataSource);
this.getRequest().setAttribute(ReportConstants.DISPLAY_FIELDS_SYMBOL,
reportHanderImpl.getDisplayStr());
//获取报表类型(表格 or 图形)
this.getRequest().setAttribute( ReportConstants.REPORT_TYPE_SYMBOL, reportHanderImpl.getReportType());
//报表输出格式类型(PDF or EXCEL ,HTML)
this.getRequest().setAttribute( ReportConstants.REPORT_OUT_FORMAT_SYMBOL, reportHanderImpl.getFormatType());
this.getRequest().setAttribute(ReportConstants.REPORT_PARAMETER_SYMBOL,
reportHanderImpl.getParamMap());
try {
this.getRequest().getRequestDispatcher("/JReportServlet").forward(
ServletActionContext.getRequest(),
ServletActionContext.getResponse());
} catch (ServletException e) {
new AppException(e);
} catch (IOException e) {
new AppException(e);
}
}
EG2:
@SuppressWarnings("rawtypes")
public void exportReportList1(CommonReportHandler commonReportHandler)
throws AppException {
List lst = commonReportHandler.getDataSourceList();
List<Object> dataSourceList = null;
try {
if (lst != null && lst.size() > 0) {
dataSourceList = new ArrayList<Object>();
JRDataSource dataSource = null;
for (int i = 0; i < lst.size(); i++) {
List datalist = (List) lst.get(i);
if (datalist != null && datalist.size() > 0) {
dataSource = new JRBeanCollectionDataSource(datalist);// 获取数据集
} else {
dataSource = new JREmptyDataSource();
}
dataSourceList.add(dataSource);// 组装数据源集合
}
}
this.getRequest().setAttribute(ReportConstants.REPORT_FLAG, "1");
// 设置路径
this.getRequest().setAttribute(
ReportConstants.REPORT_PATHLIST_SYMBOL,
commonReportHandler.getReportFiles());
// 获取报表类型(表格 or 图形)
this.getRequest().setAttribute("ReportType", "GraphicsReport");
// 报表输出格式类型(PDF or EXCEL ,HTML)
this.getRequest().setAttribute(
ReportConstants.REPORT_OUT_FORMAT_SYMBOL,
commonReportHandler.getFormatType());
// 设置数据源LIST
this.getRequest().setAttribute(
ReportConstants.REPORT_DATASOURCELIST_SYMBOL,
dataSourceList);
// 设置MAP参数
this.getRequest().setAttribute(
ReportConstants.REPORT_PARAMETER_SYMBOL,
commonReportHandler.getParamMap());
this.getRequest()
.getRequestDispatcher("/JReportServlet")
.forward(ServletActionContext.getRequest(),
ServletActionContext.getResponse());
} catch (ServletException e) {
throw new AppException(e);
} catch (IOException e) {
throw new AppException(e);
}
}
打印信息,通过.jasper工具将集合输出到PDF文件 然后利用打印机打印文件
标签:jdb localhost return nts long exception boa Servle flag
原文地址:https://www.cnblogs.com/UUUz/p/9167565.html