JasperReport导出报表8
我们已经看到在前面的章节中,如何打印和查看的JasperReport生成的文档。在这里,我们将看到如何在其他格式,如PDF,HTML和XLS转换或导出这些报告。 Facade类net.sf.jasperreports.engine.JasperExportManager提供实现这一功能。导出方式转变JasperPrint对象(.jrprint文件)导入到不同的格式。
下面的代码(JasperReportExport.java)演示了JasperReport文档的导出过程。该JasperExportManager提供的方法将报表导出成PDF,HTML和XML。导出到使用的类net.sf.jasperreports.engine.export.JRXlsExporter的XLS格式。此代码生成以下三个文件:
sample_report.pdf
sample_report.htmll
sample_report.xls
导出为其他格式
让我们来写一个报表模板。在JRXML文件的内容 (C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml) 如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
- "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
- <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports
- http://jasperreports.sourceforge.net/xsd/jasperreport.xsd"
- name="jasper_report_template" language="groovy" pageWidth="595"
- pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20"
- topMargin="20" bottomMargin="20">
- <queryString>
- <![CDATA[]]>
- </queryString>
- <field name="country" class="java.lang.String">
- <fieldDescription><![CDATA[country]]></fieldDescription>
- </field>
- <field name="name" class="java.lang.String">
- <fieldDescription><![CDATA[name]]></fieldDescription>
- </field>
- <columnHeader>
- <band height="23">
- <staticText>
- <reportElement mode="Opaque" x="0" y="3" width="535"
- height="15" backcolor="#70A9A9" />
- <box>
- <bottomPen lineWidth="1.0" lineColor="#CCCCCC" />
- </box>
- <textElement />
- <text><![CDATA[]]> </text>
- </staticText>
- <staticText>
- <reportElement x="414" y="3" width="121" height="15" />
- <textElement textAlignment="Center"
- verticalAlignment="Middle">
- <font isBold="true" />
- </textElement>
- <text><![CDATA[Country]]></text>
- </staticText>
- <staticText>
- <reportElement x="0" y="3" width="136" height="15" />
- <textElement textAlignment="Center"
- verticalAlignment="Middle">
- <font isBold="true" />
- </textElement>
- <text><![CDATA[Name]]></text>
- </staticText>
- </band>
- </columnHeader>
- <detail>
- <band height="16">
- <staticText>
- <reportElement mode="Opaque" x="0" y="0" width="535"
- height="14" backcolor="#E5ECF9" />
- <box>
- <bottomPen lineWidth="0.25" lineColor="#CCCCCC" />
- </box>
- <textElement />
- <text><![CDATA[]]> </text>
- </staticText>
- <textField>
- <reportElement x="414" y="0" width="121" height="15" />
- <textElement textAlignment="Center"
- verticalAlignment="Middle">
- <font size="9" />
- </textElement>
- <textFieldExpression class="java.lang.String">
- <![CDATA[$F{country}]]>
- </textFieldExpression>
- </textField>
- <textField>
- <reportElement x="0" y="0" width="136" height="15" />
- <textElement textAlignment="Center"
- verticalAlignment="Middle" />
- <textFieldExpression class="java.lang.String">
- <![CDATA[$F{name}]]>
- </textFieldExpression>
- </textField>
- </band>
- </detail>
- </jasperReport>
接着,POJO文件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBean.java 的内容如下:
- package com.yiibai;
- public class DataBean {
- private String name;
- private String country;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getCountry() {
- return country;
- }
- public void setCountry(String country) {
- this.country = country;
- }
- }
文件 C:\tools\jasperreports-5.0.1\test\src\com\yiibai\DataBeanList.java 的内容如下:
- package com.yiibai;
- import java.util.ArrayList;
- public class DataBeanList {
- public ArrayList<DataBean> getDataBeanList() {
- ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
- dataBeanList.add(produce("Manisha", "India"));
- dataBeanList.add(produce("Dennis Ritchie", "USA"));
- dataBeanList.add(produce("V.Anand", "India"));
- dataBeanList.add(produce("Shrinath", "California"));
- return dataBeanList;
- }
- /**
- * This method returns a DataBean object,
- * with name and country set in it.
- */
- private DataBean produce(String name, String country) {
- DataBean dataBean = new DataBean();
- dataBean.setName(name);
- dataBean.setCountry(country);
- return dataBean;
- }
- }
写一个主类文件JasperReportFill.java,它从类(DataBeanList)获取java bean集合,并将其传递到Jasper 报表引擎,填补了报表模板。把它保存到目录 C:\tools\jasperreports-5.0.1\test\src\com\yiibai.
- package com.yiibai;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Map;
- import net.sf.jasperreports.engine.JRException;
- import net.sf.jasperreports.engine.JRExporterParameter;
- import net.sf.jasperreports.engine.JasperExportManager;
- import net.sf.jasperreports.engine.JasperFillManager;
- import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
- import net.sf.jasperreports.engine.export.JRXlsExporter;
- public class JasperReportFill {
- @SuppressWarnings("unchecked")
- public static void main(String[] args) {
- String sourceFileName = "c://tools/jasperreports-5.0.1/"
- + "test/jasper_report_template.jasper";
- String printFileName = null;
- DataBeanList DataBeanList = new DataBeanList();
- ArrayList dataList = DataBeanList.getDataBeanList();
- JRBeanCollectionDataSource beanColDataSource =
- new JRBeanCollectionDataSource(dataList);
- Map parameters = new HashMap();
- try {
- printFileName = JasperFillManager.fillReportToFile(sourceFileName,
- parameters, beanColDataSource);
- if (printFileName != null) {
- /**
- * 1- export to PDF
- */
- JasperExportManager.exportReportToPdfFile(printFileName,
- "C://sample_report.pdf");
- /**
- * 2- export to HTML
- */
- JasperExportManager.exportReportToHtmlFile(printFileName,
- "C://sample_report.htmll");
- /**
- * 3- export to Excel sheet
- */
- JRXlsExporter exporter = new JRXlsExporter();
- exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME,
- printFileName);
- exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME,
- "C://sample_report.xls");
- exporter.exportReport();
- }
- } catch (JRException e) {
- e.printStackTrace();
- }
- }
- }
在这里,我们已经包括了逻辑Jasper 打印文件导出到PDF,HTML和XLS格式。
生成报表
让我们用我们的常规Ant构建过程编译和执行上述文件。 build.xml文件如下图所示:
- <?xml version="1.0" encoding="UTF-8"?>
- <project name="JasperReportTest" default="executereport" basedir=".">
- <import file="baseBuild.xml"/>
- <target name="executereport" depends="compile,compilereportdesing,run">
- <echo message="Im here"/>
- </target>
- <target name="compilereportdesing"
- description="Compiles the JXML file and
- produces the .jasper file.">
- <taskdef name="jrc"
- classname="net.sf.jasperreports.ant.JRAntCompileTask">
- <classpath refid="classpath" />
- </taskdef>
- <jrc destdir=".">
- <src>
- <fileset dir=".">
- <include name="*.jrxml" />
- </fileset>
- </src>
- <classpath refid="classpath" />
- </jrc>
- </target>
- </project>
进入命令提示符,然后转到目录C:\tools\jasperreports-5.0.1\test,其中build.xml已放置。最后执行的命令 ant -Dmain-class=com.yiibai.JasperReportFill. 输出如下所示:
- C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.yiibai.JasperReportFill
- Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml
- clean-sample:
- [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
- [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
- [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint
- compile:
- [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes
- [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28:
- warning: 'includeantruntime' was not set, defaulting t
- [javac] Compiling 4 source files to C:\tools\jasperreports-5.0.1\test\classes
- compilereportdesing:
- [jrc] Compiling 1 report design files.
- [jrc] log4j:WARN No appenders could be found for logger
- (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
- [jrc] log4j:WARN Please initialize the log4j system properly.
- [jrc] log4j:WARN See http://logging.apache.org/log4j/1.2/faq.htmll#noconfig for more info.
- [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.
- run:
- [echo] Runnin class : com.yiibai.JasperReportFill
- [java] log4j:WARN No appenders could be found for logger
- (net.sf.jasperreports.extensions.ExtensionsEnvironment).
- [java] log4j:WARN Please initialize the log4j system properly.
- executereport:
- [echo] Im here
- BUILD SUCCESSFUL
- Total time: 32 seconds
正如上面执行的结果,会发现三个文件sample_report.pdf,sample_report.htmll,sample_report.xls已生成在 C:\ 目录.
JasperReport导出报表8的更多相关文章
- 如何利用FastReport.Net 设计并导出报表?
在你的程序中,你可以使用FastReport.Net 报表设计器.要做到这一点,你需要使用报表对象设计方法: report1 = new Report();report1.Load("rep ...
- 【ABAP系列】SAP ALV 导出报表数据 始终使用选定的格式”,一旦勾上,就再也不会弹出选择框了。
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ALV 导出报表数据 始 ...
- JasperReport填充报表6
任何报告工具的主要目的是为了生产出高品质的文档.举报填充过程有助于报告工具通过操纵数据集来实现这一目标.需要报表填充过程的主要输入是: 报表模板:这是实际的JasperReport文件 报告参数:这些 ...
- JasperReport编译报表设计5
我们在前面的章节中产生的JasperReport模板(JRXML文件).这个文件不能直接用于生成报告.它必须被编译成JasperReport的“本地二进制"格式,称为Jasperfile.在 ...
- JavaScript+XML+VBA导出报表初步构想
最近在做人事档案管理系统遇到的一个问题就是种类多.数量大的报表打印问题.这个系统的一个特点就是信函打印,各种介绍信.各种证明信.对于这样的重复性的功能,最好的方法就是所有的报表实现格式套用. 经过分析 ...
- JasperReport子报表参数传递
子报表参数传递 下图的参数名称可以自定义 再子报表新增一个同名称的参数即可
- js导出报表
原文链接:https://blog.csdn.net/qq_37936542/article/details/78376156 需求:项目中有一个学生签到模块需要导出每天的签到数据,一开始用poi在后 ...
- phpexcel 使用模板导出报表
function exportExcel($list, $filename, $indexKey = array()){ require_once(getcwd() . '../../app/Libs ...
- thinkphp导出报表
这是我写的一个方法,这个方法可以直接使用在你的代码上.下面我画红色的就是要修改或者删除的.public function import(){ /*创建PHPEXCLE读取,默认excel2007,最好 ...
随机推荐
- datagrid 的标题的内容不对应整齐
$(document).ready(function(){ var column = "[["+ "{'title':'工号','field':'grantorCode' ...
- idea激活破解
下载链接:https://pan.baidu.com/s/1BADk1MCm0YxtB6zoX0DivA 提取码 ze9m将破解补丁放到bin文件中jetbrains-all.jar 在这俩个文件最后 ...
- 第四周课堂笔记3th
1.函数的嵌套 作用域,说的是变量 全局作用域:内置命名空间,全局命名空间 全局空间不可以引用局部空间 局部作用域: 局部命名空间 开辟的临时空间前提是调用了函数 全局作用域在整个文件中被使用 L ...
- 「APIO 2019」桥梁
题目 三天终于把\(APIO\)做完了 这题还是比较厉害的,如果不知道这是个分块应该就自闭了 考虑一个非常妙的操作,按照操作分块 我们设一个闸值\(S\),把\(S\)个边权修改操作分成一块,把所有的 ...
- SQL Serve 临时表
SQL Server 支持临时表.临时表就是那些名称以井号 (#) 开头的表.如果当用户断开连接时没有除去临时表,SQL Server 将自动除去临时表.临时表不存储在当前数据库内,而是存储在系统数据 ...
- winform 旋转图片
//img.RotateFlip(RotateFlipType.Rotate90FlipNone); //顺时针旋转90度 RotateFlipType.Rotate90FlipNone //逆时针旋 ...
- selenium借助AutoIt识别上传(下载)详解【转】
AutoIt目前最新是v3版本,这是一个使用类似BASIC脚本语言的免费软件,它设计用于Windows GUI(图形用户界面)中进行自动化操作.它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动 ...
- 在DataWorks中实现指定UDF只能被指定账户访问
背景 之前写过一篇文章是关于“DataWorks和MaxCompute内部权限体系的区别”有兴趣的朋友可以点击阅读查看详情.但是还是有些同学会问,我如何在DataWorks中实现我的具体某个Resou ...
- videojs实现双击视频全屏播放、播放器全屏时视频未全屏
https://blog.csdn.net/staritstarit/article/details/78451963 暂停时只能使用左下角的暂停按钮,点击视频时不再响应 使用width和height ...
- mysql索引优化及explain关键字段解释
一.explain关键字解释 1.id MySQL QueryOptimizer 选定的执行计划中查询的序列号,表示查询中执行select 子句或操作表的顺序.id 值越大优先级越高,越先被执行.id ...