- 浏览: 990128 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (223)
- JDBC技术 (29)
- Java Base (21)
- SSH框架的集合 (5)
- Javascript部分 (16)
- Sping2.5框架 (6)
- Hibernate框架 (19)
- JDBC中的数据库连接 (5)
- Ajax技术应用 (9)
- Java工具包下载 (3)
- Database (4)
- Java Web (13)
- 我的生活 (4)
- Struts2 (25)
- S2SH (1)
- Prototype (1)
- jfreeChart (5)
- JPA (7)
- JBPM (1)
- JasperReport (6)
- DWR (1)
- freeMark (2)
- IBatis (2)
- FCKeditor (2)
- POI (1)
- JQuery (6)
- JSON (1)
- JavaMail (3)
- Flex (2)
- CSS收藏夹 (1)
- 润乾报表 (2)
- 开源技术 (1)
- Android (2)
- Android_UI (1)
- Android_OS (6)
- Android_OpenLibs (3)
- Volley (1)
- JS_OpenLibs (1)
- Hessian (3)
- OS (1)
最新评论
-
damoluomu:
简单易懂
Java Web开发Session超时设置 -
di1984HIT:
学习了~~~~~~
Java Web开发Session超时设置 -
lord_is_layuping:
...
Java Web开发Session超时设置 -
15111285554:
...
Java Web开发Session超时设置 -
sfg1314:
暂停后重新下载就会报错:ClientAbortExceptio ...
Java Web 文件下载之断点续传
public ActionResult projectPrint() { String[] printValue = null; // 从页面中获得要查询的字段 String reqPrintValue = getRequest().getParameter("printValue"); // 没有选择则默认全打印 if (null == reqPrintValue || StringUtils.isEmpty(reqPrintValue)) { printValue = new String[] { "pnumber", "pname", "pdepart", "pdecision", "pthrow", "plastmonth", "pfund", "ploan" }; } else { printValue = reqPrintValue.split(","); } // 查询统计数据 List<Object[]> projectList = getEntityManager().queryPrintProjectInfo(printValue); // 将数据转换为Map对象,换化成Map对象 List<Map> reportDataList = new ArrayList<Map>(); for (int i = 0; i < projectList.size(); i++) { Object[] personStr = projectList.get(i); Map reportData = new HashMap(); for (int j = 0; j < personStr.length; j++) { reportData.put("field_" + j, String.valueOf(personStr[j])); } reportDataList.add(reportData); } int columCount = 0;// 数据列 int fieldCount = 0;// 字段列数(因为pname比较长所以想让pname比其它的列长些,故设计这个变量) int pnameCount = -1;// 记录下pname的序号 for (int i = 0; i < printValue.length; i++) { // pthrow下面有两列 if ("pthrow".equals(printValue[i])) { columCount = columCount + 2; fieldCount = fieldCount + 2; // ploan下面也有两列 } else if ("ploan".equals(printValue[i])) { columCount = columCount + 2; fieldCount = fieldCount + 2; // 故意让pname也占两列 } else if ("pname".equals(printValue[i])) { pnameCount = i;// 记录下pname的序号 columCount = columCount + 1; fieldCount = fieldCount + 2; } else { // 其它的列都占一个单位 columCount = columCount + 1; fieldCount = fieldCount + 1; } } InputStream is = null; try { // 从资源文件中读取报表 is = this.getClass().getResourceAsStream("/reports/project.jrxml"); JasperDesign jasperDesign = (JasperDesign) JRXmlLoader.load(is); Map styleMap = jasperDesign.getStylesMap(); // column header 对应的样式 JRDesignStyle theaderStyle = (JRDesignStyle) styleMap.get("theader"); // column detail 对应的样式 JRDesignStyle tbodyStyle = (JRDesignStyle) styleMap.get("tboby"); // pagefoot 对应的样式 JRDesignStyle tfootStyle = (JRDesignStyle) styleMap.get("tfoot"); int _START_X_ = 20;// x轴的起始位置 int startX = _START_X_; // x轴的起始位置 // 单列的宽度 // 535是jasepreReport报表column最大的宽度 int columnWidth = 535 / fieldCount; // 20,24,15是报表中已设置的,一定与之相同 final int columnHeadBandHeight = 20; final int detailHeight = 24; final int pagefootHeight = 15; // 设置报表字段 for (int idx = 0; idx < columCount; idx++) { JRDesignField field = new JRDesignField(); field.setName("field_" + idx); field.setValueClass(java.lang.String.class); jasperDesign.addField(field); } JRDesignBand columnHeadBand = (JRDesignBand) jasperDesign.getColumnHeader(); // 绘制表头 for (int idx = 0; idx < printValue.length; idx++) { if ("pnumber".equals(printValue[idx])) { JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth); staticText.setY(0); staticText.setX(startX); staticText.setHeight(2 * columnHeadBandHeight); staticText.setText("序号"); columnHeadBand.addElement(staticText); startX += columnWidth; } else if ("pname".equals(printValue[idx])) { JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); // 项目名称的宽度是其它的宽度的2倍 staticText.setWidth(columnWidth * 2); staticText.setY(0); staticText.setX(startX); staticText.setHeight(2 * columnHeadBandHeight); staticText.setText("项目名称"); columnHeadBand.addElement(staticText); startX += columnWidth * 2; } else if ("pdepart".equals(printValue[idx])) { JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth); staticText.setY(0); staticText.setX(startX); staticText.setHeight(2 * columnHeadBandHeight); staticText.setText("部门"); columnHeadBand.addElement(staticText); startX += columnWidth; } else if ("pdecision".equals(printValue[idx])) { JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth); staticText.setY(0); staticText.setX(startX); staticText.setHeight(2 * columnHeadBandHeight); staticText.setText("已决策"); columnHeadBand.addElement(staticText); startX += columnWidth; } else if ("pthrow".equals(printValue[idx])) { // 投审会下面有两列 JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth * 2); staticText.setY(0); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("投审会"); columnHeadBand.addElement(staticText); staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); columnHeadBand.addElement(staticText); staticText.setWidth(columnWidth); staticText.setY(columnHeadBandHeight); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("12月初"); staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); columnHeadBand.addElement(staticText); staticText.setWidth(columnWidth); staticText.setY(columnHeadBandHeight); staticText.setX(startX + columnWidth); staticText.setHeight(columnHeadBandHeight); staticText.setText("12月中"); columnHeadBand.addElement(staticText); startX += 2 * columnWidth; } else if ("plastmonth".equals(printValue[idx])) { // 投决会下面有一列 JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth); staticText.setY(0); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("投决会"); columnHeadBand.addElement(staticText); staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); columnHeadBand.addElement(staticText); staticText.setWidth(columnWidth); staticText.setY(columnHeadBandHeight); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("12月下"); columnHeadBand.addElement(staticText); startX += columnWidth; } else if ("pfund".equals(printValue[idx])) { JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth); staticText.setY(0); staticText.setX(startX); staticText.setHeight(2 * columnHeadBandHeight); staticText.setText("基金投资额"); columnHeadBand.addElement(staticText); startX += columnWidth; } else if ("ploan".equals(printValue[idx])) { // 投贷协同额下面有两列 JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); staticText.setWidth(columnWidth * 2); staticText.setY(0); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("投贷协同额"); columnHeadBand.addElement(staticText); staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); columnHeadBand.addElement(staticText); staticText.setWidth(columnWidth); staticText.setY(columnHeadBandHeight); staticText.setX(startX); staticText.setHeight(columnHeadBandHeight); staticText.setText("金额"); staticText = new JRDesignStaticText(); staticText.setStyle(theaderStyle); columnHeadBand.addElement(staticText); staticText.setWidth(columnWidth); staticText.setY(columnHeadBandHeight); staticText.setX(startX + columnWidth); staticText.setHeight(columnHeadBandHeight); staticText.setText("入库情况"); columnHeadBand.addElement(staticText); startX += 2 * columnWidth; } } // 绘制Detail部门 startX = _START_X_; JRDesignBand columnDetailBand = (JRDesignBand) jasperDesign.getDetail(); for (int idx = 0; idx < columCount; idx++) { JRDesignTextField textField = new JRDesignTextField(); textField.setStretchWithOverflow(true); textField.setX(startX); textField.setY(0); if (pnameCount == idx) { textField.setWidth(2 * columnWidth); startX += 2 * columnWidth; } else { textField.setWidth(columnWidth); startX += columnWidth; } textField.setHeight(detailHeight); textField.setPositionType(JRElement.POSITION_TYPE_FLOAT); textField.setStyle(tbodyStyle); textField.setBlankWhenNull(true); JRDesignExpression expression = new JRDesignExpression(); expression.setValueClass(java.lang.String.class); expression.setText("$F{field_" + idx + "}"); textField.setExpression(expression); columnDetailBand.addElement(textField); } JRDesignBand pageFootBand = (JRDesignBand) jasperDesign.getPageFooter(); // 合计数据,本应统计的 List<Object[]> pageCountList = new ArrayList<Object[]>(); Object[] obj = new String[] { "合计", "15299", "", "", "67121", "92420", "155877", }; pageCountList.add(obj); obj = new String[] { "", "", "", "XXX小计", "", "24473", "16470", }; pageCountList.add(obj); obj = new String[] { "", "", "", "WWW小计", "", "7289", "1674", }; pageCountList.add(obj); obj = new String[] { "", "", "", "ZZZ小计", "", "32700", "13000", }; pageCountList.add(obj); obj = new String[] { "", "", "", "YYY小计", "", "12733", "120733", }; pageCountList.add(obj); obj = new String[] { "", "", "", "AAA小计", "", "2225", "120733", }; pageCountList.add(obj); obj = new String[] { "", "", "", "BBB小计", "", "3000", "0", }; pageCountList.add(obj); int footWidth = 535 / 7; for (int p = 0; p < pageCountList.size(); p++) { for (int k = 0; k < 7; k++) { Object[] ob = pageCountList.get(p); JRDesignStaticText staticText = new JRDesignStaticText(); staticText.setStyle(tfootStyle); staticText.setWidth(footWidth); staticText.setY(pagefootHeight * p); staticText.setX(k * footWidth + _START_X_); staticText.setHeight(pagefootHeight); staticText.setText(String.valueOf(ob[k])); pageFootBand.addElement(staticText); } } // 编译报表 JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign); String type = this.getRequest().getParameter("type");//pdf格式 JasperUtils.prepareReport(jasperReport, type); // 报表数据源 JRDataSource dataSource = new JRBeanCollectionDataSource(reportDataList); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource); HttpServletResponse response = this.getResponse(); JasperUtils.export(jasperPrint, response, getRequest(), type); } catch (Exception e) { e.printStackTrace(); } return null; }
public static void export(JasperPrint jasperPrint, HttpServletResponse response, HttpServletRequest request, String type) throws IOException { if (EXCEL_TYPE.equals(type)) { exportExcel(jasperPrint, response, request); } else if (PDF_TYPE.equals(type)) { exportPDF(jasperPrint, response, request); } else if (HTML_TYPE.equals(type)) { exportHTML(jasperPrint, response, request); } else { exportPrint(jasperPrint, response, request); } }
public static void exportExcel(JasperPrint jasperPrint, HttpServletResponse response, HttpServletRequest request) throws IOException { response.setContentType("application/vnd.ms-excel"); String filename = DownloadHelper.encodeFilename("未命名.xls", request); response.setHeader("Content-disposition", "attachment;filename=" + filename); ServletOutputStream ouputStream = response.getOutputStream(); JRXlsExporter exporter = new JRXlsExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream); exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE); exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); try { exporter.exportReport(); } catch (JRException e) { e.printStackTrace(); } ouputStream.flush(); ouputStream.close(); } public static void exportPDF(JasperPrint jasperPrint, HttpServletResponse response, HttpServletRequest request) throws IOException { response.setContentType("application/pdf"); String filename = DownloadHelper.encodeFilename("未命名.pdf", request); response.setHeader("Content-disposition", "attachment;filename=" + filename); ServletOutputStream ouputStream = response.getOutputStream(); try { JasperExportManager.exportReportToPdfStream(jasperPrint, ouputStream); } catch (JRException e) { e.printStackTrace(); } ouputStream.flush(); ouputStream.close(); }
发表评论
-
使用JavaBean构造JasperReport子报表
2010-01-27 14:05 10408使用JavaBean作为数据源构造JasperReport子报 ... -
JasperReport + Servlet Web应用之:HTML显示报表内容
2010-01-26 17:18 10025构造我们的JavaBean:(get,set方法省略,属性名称 ... -
JasperReport+Servlet Web应用之:导PDF,Excel,Rtf文件
2010-01-17 19:18 4290第一,二,三,四步请参照:JasperReport+Servl ... -
JasperReport+Servlet Web应用之:打印预览
2010-01-17 18:58 10456打印预览与打印的准备工作是一样的,第一,二,三,四,五步请参照 ... -
JasperReport+Servlet Web应用之:打印
2010-01-17 18:04 10070关于JasperReport的简介大家可以去google上去查 ...
相关推荐
Java 中jasperReport实现动态列打印的实现代码 Java 中jasperReport实现动态列打印的实现代码主要介绍了使用jasperReport实现动态列打印的相关知识点。下面将详细介绍相关知识点。 首先,jasperReport是一个流行的...
JasperReport通过其内建的脚本语言JasperReports Scriptlet或Java类来实现动态列的逻辑,可以在运行时根据数据源动态调整列的布局和内容。 生成HTML导出是JasperReport的另一项重要特性。它允许用户将报表以网页的...
本示例将详细介绍如何在jasperReport中实现动态合并单元格。 首先,我们需要了解jasperReport的基本结构。一个jasperReport由设计文件(.jrxml)和编译后的字节码文件(.jasper)组成。设计文件使用XML语法定义了...
在这个特定的案例中,我们关注的是如何在JasperReport和iReport中实现固定表头以及隐藏和显示列的功能。 首先,让我们了解一下JasperReport。JasperReport是一个开源的报表库,它允许开发者在各种应用程序中生成...
2. **动态调整行高**:JasperReport允许根据内容动态调整报表行高,这是通过在文本字段设置“Stretch with overflow”属性来实现的。当内容过多时,行高会自动扩展以适应内容。 3. **集合变量反填充值**:在处理...
示例代码可能展示了如何在Java代码中动态控制报表的显示行为,例如通过修改JRDataSource或JRDesign对象来实现隐藏列。同时,它还可能包含了如何在ireport设计界面中设置相关属性的步骤,以及最终生成的jrxml文件的...
jasperReport是一款开源的Java报表工具,它允许开发者创建复杂的打印报告和交互式PDF、HTML、XLS等格式的报表。jasperReport的核心功能包括设计报表模板、数据绑定、数据处理以及报表渲染。它的强大之处在于能够灵活...
【jasper动态输出列 工程带jar包】是一个基于Java的项目,专注于利用jasperreport和ireport库实现报表的动态列生成。这个工程包含了所有必要的jar包,确保用户在配置好JDK 8环境后可以直接运行。jasperreport是一个...
开发者可以通过实现特定接口,将JasperReport库集成到自定义的数据源中,实现报告的动态生成。 1. **JasperDesign类**:未编译的报表实例,由XML设计文件解析得到。在不直接操作XML文件的情况下,也可以动态创建...
4. **字段和参数**:字段是来自数据源的列,而参数是用户在运行时输入的值,可以用来动态定制报告。 5. **分组和排序**:如“groupOpenReport”所示,JasperReport支持数据分组,可以在每个组的开头和结尾插入特殊...
在ireport+jasperreport联合开发过程中,首先需要在ireport中设计报表模板,定义好报表的结构和样式,包括行、列、单元格、图表等元素。设计完成后,将生成的.jasper文件与Java项目集成。在Java代码中,使用...
**JasperReport与iReport简介** JasperReport是一款开源的报告生成库,它...在实际项目中,合理地整合JasperReport到Web应用,不仅可以实现静态数据的展示,还可以实现动态数据的实时更新,为决策提供有力的数据支持。
JasperReport是一款强大的报表打印组件,它是开放源代码且免费的。在撰写本文时,JasperReport的最新版本是3.7.0,可以在官方站点[jasperforge.org](http://jasperforge.org/)下载获得。JasperReport提供了丰富的API...
Java报表打印过程中,需要将这些数据动态填充到报表模板中,生成最终的打印文档。 7. **打印事件和回调**:在Java Print Service API中,可以注册监听器来处理打印过程中的事件,如打印开始、页面完成、打印结束等...
在实际应用中,你可能需要结合子报表和行合并功能,例如在一个主报表中展示多个产品的销售数据,并在每个产品下面显示详细的订单行,同时对某些列进行行合并以优化显示效果。 以“MySubReport”为例,这个文件可能...
### jasperreport iReport 用户手册知识点 #### 一、序言 **iReport** 是一个图形界面工具,用于设计和创建 **JasperReports** 的报表模板。它为开发者提供了直观的操作方式来创建复杂的报表。 ##### 1.1 什么是...
实现条件打印的方法包括使用表达式来控制字段的可见性。 ##### 4.5 如何将PDF格式报表结果直接输出到打印机 将生成的PDF文件直接发送到打印机的步骤。 #### 5. 参考信息及其他 ##### 5.1 iReport中引用报表中的...
- **动态报表**:报表应用程序允许在运行时动态决定报表格式和数据,实现数据和格式的分离,JFreeChart的图表可以在运行时根据数据变化更新。 6. **报表应用程序的组成部分** - **报表**:定义了报表的格式和数据...