- 浏览: 102057 次
- 性别:
- 来自: 北海
最新评论
-
July01:
最近了解到一款StratoIO打印控件,功能如下:1、Html ...
IE下利用js实现打印功能 -
sunxiyuan111:
试了第三种方法 ,管用,解决了大问题谢谢
jasperreports导出pdf报表时粗体的显示问题 -
java爱好者92:
主子报表帆软报表官网上的攻略说得很详细,可以参考一下
利用iReport制作子报表 -
fengjianquan9527:
狗屁不通,毛用不管
jasperreports导出pdf报表时粗体的显示问题 -
xiegqooo:
codeloafer 写道现在activemq5.6 以上ne ...
ActiveMQ集群应用
/** * 導出html形式報表 * @param request 請求對象 * @param response 響應對象 * @param parameters 設置報表的參數 * @param jrxmlFilePath 報表的jrxml文件路徑 * @param jasperFilePath 報表的jasper文件路徑 * @param resultList 數據列表(List),用於構造數據源 */ @SuppressWarnings("unchecked") public static void exportHtmlReport(HttpServletRequest request, HttpServletResponse response, Map parameters, String jrxmlFilePath, String jasperFilePath, List resultList) { JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(resultList); try { JasperPrint jasperPrint = new JasperPrintWithJavaBean(parameters, jrxmlFilePath, jasperFilePath, dataSource).getJasperPrint(); JRHtmlExporter exporter = new JRHtmlExporter(); request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, jasperPrint); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream()); exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "/servlets/image?image="); // exporter.setParameter(JRExporterParameter.PAGE_INDEX, pageIndex); exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,false); //設置瀏覽器的圖片不緩存 exporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8"); //設置html顯示字體過小的問題 exporter.setParameter(JRHtmlExporterParameter.SIZE_UNIT, "pt"); exporter.exportReport(); } catch(Exception e) { e.printStackTrace(); } finally { try { if(response.getOutputStream() != null) response.getOutputStream().close(); } catch (IOException e) { e.printStackTrace(); } } }
这个方法是直接在页面上显示报表,所以struts2的配置如下:
<action name="exportFareConditionBudgetByFare" class="com.boc.web.action.financialfare.statistics.BudgetMonitoringConditionAction" method="exportFareConditionBudgetByFare"> <result name="success" type="jasper"> <param name="location">/jrxml/budget/fare_con_budget_fare.jasper</param> <param name="dataSource">budgetList</param> <param name="format">HTML</param> <!-- <param name="imageServletUrl"> <![CDATA[/image?image=]]> </param>--> </result> </action>
/** * 生成pdf形式報表文件 * @param parameters 設置報表的參數 * @param jrxmlFilePath 報表的jrxml文件路徑 * @param jasperFilePath 報表的jasper文件路徑 * @param resultList 數據列表(List),用於構造數據源 * @return 返回生成的pdf文件的絕對路徑 */ @SuppressWarnings("unchecked") public static String exportPdfReport(Map parameters, String jrxmlFilePath, String jasperFilePath, List resultList) { JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(resultList); try { JasperPrint jasperPrint = new JasperPrintWithJavaBean(parameters, jrxmlFilePath, jasperFilePath, dataSource).getJasperPrint(); JasperExportManager.exportReportToPdfFile(jasperPrint, getFileName(jrxmlFilePath, ".jrxml")+".pdf"); return getFileName(jrxmlFilePath, ".jrxml")+".pdf"; } catch(Exception e) { e.printStackTrace(); return null; } }
这个方法是直接生成pdf文件并提示用户下载,用的是ajax的提交方式,所以struts2的配置如下:
<action name="generateReportFile" class="com.boc.web.action.financialfare.statistics.BudgetMonitoringConditionAction" method="generateReportFile"> <result name="success" type="json"> </result> </action>
/** * 生成excel形式報表文件 * @param parameters 設置報表的參數 * @param jrxmlFilePath 報表的jrxml文件路徑 * @param jasperFilePath 報表的jasper文件路徑 * @param resultList 數據列表(List),用於構造數據源 * @return 返回生成的excel文件的絕對路徑 */ @SuppressWarnings("unchecked") public static String exportXlsReport(Map parameters, String jrxmlFilePath, String jasperFilePath, List resultList) { JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(resultList); try { JasperPrint jasperPrint = new JasperPrintWithJavaBean(parameters, jrxmlFilePath, jasperFilePath, dataSource).getJasperPrint(); // JRXlsExporter xlsExporter = new JRXlsExporter(); JRAbstractExporter exporter = new JExcelApiExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, getFileName(jrxmlFilePath, ".jrxml")+".xls"); //刪除最後一條記錄的空行 exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IGNORE_PAGE_MARGINS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); //删除多余的ColumnHeader exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); //顯示邊框 exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8"); exporter.exportReport(); return getFileName(jrxmlFilePath, ".jrxml")+".xls"; } catch(Exception e) { e.printStackTrace(); return null; } }
这个方法是直接生成excel文件并提示用户下载,用的是ajax的提交方式,所以struts2的配置如下:
<action name="generateReportFile" class="com.boc.web.action.financialfare.statistics.BudgetMonitoringConditionAction" method="generateReportFile"> <result name="success" type="json"> </result> </action>
注意:JExcelApiExporter这个类需要用到jxl的包,用poi的不可以。
/** * 打印報表 */ public static void print(HttpServletRequest request, HttpServletResponse response,Map parameters, String jrxmlFilePath, String jasperFilePath, List resultList){ String filePath=exportPdfReport(parameters,jrxmlFilePath,jasperFilePath,resultList); File returnFile=new File(filePath); response.setHeader("Content-disposition", "filename="+getFileName(jrxmlFilePath, ".jrxml")+".pdf"); response.setHeader("Content-Type", "application/pdf"); BufferedInputStream bis = null;//读excel BufferedOutputStream bos = null;//输出 try{ //读取excel文件 bis = new BufferedInputStream(new FileInputStream(returnFile)); //写入response的输出流中 bos=new java.io.BufferedOutputStream(response.getOutputStream()); byte[] buff = new byte[2048];/*设置缓存*/ int bytesRead; while(-1!= (bytesRead = bis.read(buff, 0, buff.length))){ bos.write(buff, 0, bytesRead); } }catch(Exception e){ e.printStackTrace(); }finally{ if (bis != null) try { bis.close(); } catch (IOException e) { e.printStackTrace(); } if (bos != null) try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } }
这个方法是打印报表的,直接把生成的pdf文件以流的形式输出到页面,然后利用adobe的pdf工具来打印。需要客户端安装adobe的pdf工具,你也可以利用其他的方式来打印,如IE内置的一个插件,在此不详细描述。
发表评论
-
cas客户端应用实现
2011-12-20 15:51 6706cas服务器端的开发请参考: http://xiaomage ... -
cas+tomcat开发单点登录教程(定制认证方式篇)
2011-12-19 20:43 10361CAS 是 Yale 大学发起的 ... -
java开发webservice的几种方式
2011-12-17 15:33 10807webservice的应用已经越来 ... -
compass搜索引擎的应用
2011-09-12 11:29 2764前阵子在做一个手机服务器端系统的开发,主要使用spring+h ... -
spring security 3.0 实现认证与授权
2011-07-10 20:11 2006先看一下spring security 官方对以下几个类或接口 ... -
EJB系统使用JMS异步发送邮件
2011-01-26 15:58 2092EJB中有三种Bean,EntityBean,SessionB ... -
jasperreports导出pdf报表时粗体的显示问题
2010-12-23 17:14 6552最近一直在做报表,用的是iReport3.7.3和jasper ... -
利用iReport制作子报表
2010-12-10 16:09 5791iReport版本:3.7.3,JavaBean作为数据源。1 ... -
解决GET提交中文乱码问题
2010-11-19 15:20 2657今天同事在做一个手机 ... -
IE下利用js实现打印功能
2010-10-29 11:08 3611这主要是用到了IE的一个内置插件,在html代码的<he ... -
利用js给select element产生年份
2010-10-25 16:32 2657function generateYearFun() { v ... -
解决struts2+jasperReport在生成html形式的报表时的图片问题
2010-10-18 14:09 3500Struts2和jasperReport整合时,在生成html ... -
struts2 java.lang.IllegalStateException异常的解决方法
2010-10-15 18:46 4928环境:eclipse+struts2+EJB3.0+jaspe ... -
Tomcat JVM调优有感
2010-09-25 22:42 2129最近在做一个社交类网 ... -
struts2+ajax做的一个级联下拉列表
2010-09-20 14:47 2662struts2+ajax做的一个级联下拉列表 struts端代 ... -
struts2+jsonplugin的问题
2010-09-15 00:16 1299[size=xx-small]今天做项目碰到了个问题,在做一个 ... -
关于embed标签的src属性
2010-09-05 16:47 1864前阵子做个项目,需要把用户上传的pdf文件转换为swf文件然后 ... -
ssh与jbpm4.3的整合
2010-05-28 20:23 1469首先说一下环境,spring3.0+struts2+hiber ...
相关推荐
Struts2、JasperReport 和 iReport 是开发Web报表应用中的常用技术栈。本文主要针对使用Struts2框架结合JasperReport5.0与iReport5.0进行报表开发时可能遇到的问题进行总结。 1. **报表预览问题**: - 数据源为空...
总结来说,这个项目通过Struts2作为控制器处理用户请求,iReport用于设计报表模板,JasperReport负责生成报表,而Highcharts Export Server则提供了额外的图表导出能力。这种组合提供了一套完整的报表系统,可以满足...
Action可能需要一个方法来填充数据源,并调用JasperPrint对象来生成报表。 4. 数据源处理:根据应用需求,可以使用JDBC、Java集合或者其他方式来提供报表数据。在Action中,使用JasperFillManager.fillReport()方法...
开发者可以利用JasperReport的强大设计工具和Struts2的控制流程来轻松地生成动态、交互式的报表,满足各种业务需求。虽然这个示例仅使用JavaBean作为数据源,但在实际项目中,可以根据需要扩展到更复杂的数据连接和...
Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建结构清晰、可维护性高的Web应用程序,而JasperReport则是一个功能丰富的报告生成库,能够创建复杂的报表并支持多种输出格式,如HTML、PDF等。 在"整合...
总结起来,这篇博文会介绍如何在Struts2中集成JasperReport,通过编写Action类和配置Struts2的XML文件,实现动态报表的生成,并导出为PDF、Excel和HTML格式。这样的功能对于需要展示大量数据的应用场景非常有用,如...
使用ireport和struts2进行报表设计的简单示例,生成普通报表和饼图、柱状图。java工程的lib里包含丰富的jar包,且很多都是从各个网站下载的最新版本,文件夹内还包含一些ireport和jasperreport文档,适合刚入门学习...
2. JasperReport 3.7.1:报表引擎,负责生成报表。 3. Struts2.1.8:Web应用框架。 4. poi-3.5.jar:如果需要生成Excel格式的报表,需要此Apache POI库。 在整合Struts2和JasperReport3的过程中,我们主要关注以下...
在与JasperReport结合时,通常会创建一个Struts2 Action,这个Action负责接收前端请求,调用业务服务获取报表数据,然后将数据传递给JasperReport生成报表。 接下来是Spring2.5的使用。Spring作为一个全面的企业级...
总的来说,这个项目组合使用了jasperReport生成报表,Struts2处理Web请求,以及jatoolsPrinter进行打印,展示了Java企业级应用中一个完整的报表生成和打印流程。开发者需要熟悉这些库的使用,以及如何在Struts2框架...
Struts2提供了流处理能力,可以方便地将生成的报表以二进制流的形式发送到浏览器。 6. **前端展示**:在页面上,使用Struts2的标签库或者其他方式(如JavaScript、jQuery)来触发报表下载动作,或者在页面上直接...
这种方式下,JasperReports通过JDBC连接到数据库,获取数据并生成报表。步骤大致包括: 1. 创建JasperReport设计文件(.jrxml),定义报表布局和查询语句。 2. 编译.jrxml文件为.jasper二进制文件,这个过程会解析...
4. **整合Struts2**:创建一个Struts2 Action,这个Action负责生成报表。在Action中调用上述步骤生成报表实例,然后将其设置为Action的一个属性,以便传递到视图。 5. **配置结果类型**:在struts.xml中,为这个...
此案例适合初学者了解SSH框架的集成,以及如何利用jasperreport生成报表。通过学习,开发者可以掌握如何在实际项目中处理数据导入、报表设计和生成等任务。同时,对于熟悉SQL-SERVER数据库的用户,此案例也提供了与...
通常,我们会在Struts2的Action中处理业务逻辑,获取需要的数据,然后调用JasperReport API来生成报表。Action可以通过`JRDataSource`接口将数据传递给JasperReport,也可以预先将数据写入到CSV或XML文件,作为...
在Struts2中,FreeMarker常用来生成动态视图,也可以用于生成报表模板。 7. **struts2-core-2.1.8.1.jar**:这是Struts2的主框架库,包含了Action、Interceptor、Result等核心组件,负责处理HTTP请求和响应。 8. *...