首页 > 编程语言 >在Web里面用Jasper导出Pdf、HTML、Excel,以及参数说明

在Web里面用Jasper导出Pdf、HTML、Excel,以及参数说明

时间:2023-06-04 14:38:15浏览次数:52  
标签:Web exporter java Excel HTML 参数 import new JRExporterParameter


参考:[color=red]ireport导出各种格式(pdf,excel,word,html,print)的例子[/color]:
[url]http://mingxiao2010.blog.163.com/blog/static/861904812010665366872/[/url]
说明:

PDF: JRAbstractExporter exporter =new JRPdfExporter();

Excel: JRAbstractExporter exporter = new JRXlsExporter();

HTML: JRAbstractExporter exporter = new JRHtmlExporter();

Word: JRAbstractExporter exporter = new JRRtfExporter();



[b]net.sf.jasperreports.engine.JRXlsExporter.setParameter常用参数说明[/b]


JRExporterParameter. JASPER_PRINT
//这个参数是JasperPrint的对象,exporter在导出报表前会做检测

JRExporterParameter. JASPER_PRINT_LIST
//这个参数是包含了n个JasperPrint对象的java.util.List,exporter在导出报表前会做检测

JRExporterParameter.INPUT_STREAM
//这个参数是JasperPrint被序列化对象的输入流,exporter在导出报表前会做检测

JRExporterParameter.INPUT_URL
//这个参数是包含JasperPrint被序列化对象的URL,exporter在导出报表前会做检测

JRExporterParameter.INPUT_FILE_NAME
这个参数是存储了JasperPrint被序列化对象的文件路径,exporter在导出报表前会做检测
注意:以上几个参数不能全部为空

JRExporterParameter.OUTPUT_STRING_BUFFER
//这个参数是java.lang.StringBuffer的对象,存储已经产生出的指定格式报表的内容

JRExporterParameter.OUTPUT_WRITER
//这个参数是java.io.Writer的对象,将指定格式报表的内容发送到一个字符流,例如Servlet的PrintWriter

JRExporterParameter.OUTPUT_STREAM
//这个参数是java.io.OutputStream的对象,将指定格式报表的内容发送到一个输出流,例如ServletOutputStream

JRExporterParameter.OUTPUT_FILE
//这个参数是java.io.FILE的对象,将指定格式报表的内容存储到文件里面

JRExporterParameter.OUTPUT_FILE_NAME
//这个参数是java.lang.String的对象,将指定格式报表的内容存储到文件里面

JRExporterParameter.CHARACTER_ENCODING
//这个参数是java.lang.String的对象,指定格式报表的内容编码

JExcelApiExporterParameter.IS_FONT_SIZE_FIX_ENABLED
//这个参数是java.lang.Boolean的对象,是否允许自动修正Excel每个栏位的大小

JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET
//这个参数是java.lang.Boolean的对象,每一页是否用一个Sheet

JRXlsExporterParameter. IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS
//这个参数是java.lang.Boolean的对象,是否移除行与行之间的空行

JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND
//这个参数是java.lang.Boolean的对象,页面的背景是否为白的

JRXlsExporterParameter.SHEET_NAMES
//这个参数是java.lang.String的对象,Sheet的名字

JRCsvExporterParameter.FIELD_DELIMITER
//这个参数是java.lang.String的对象,栏位之间的分隔符

JRCsvExporterParameter.RECORD_DELIMITER
//这个参数是java.lang.String的对象,栏位之间的分隔符

JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR
//这个参数是java.lang.Boolean的对象,是否输出图片到目录

JRHtmlExporterParameter.IMAGES_DIR_NAME
//这个参数是java.lang.String的对象,图片目录的绝对路径

JRHtmlExporterParameter.IMAGES_DIR
//这个参数是java.io.File的对象,图片目录

JRHtmlExporterParameter.IMAGES_URI
//这个参数是java.lang.String的对象,通过Web访问时图片的URI






commons-collections-3.2.jar


commons-logging.jar


jasperreports-3.7.6.jar


jasperreports-applet-3.7.6.jar


commons-digester-2.1.jar


commons-beanutils-1.7.jar


mysql-connector-java-5.0.5.jar


poi-contrib-3.5-beta5-20090219.jar


poi-ooxml-3.5-beta5-20090219.jar


poi-scratchpad-3.5-beta5-20090219.jar


iTextAsian.jar


poi-3.7-20101029.jar


itext-2.1.7.jar


注意后面两个红色的,第一,jasper3.7必须用poi3.6以上;第二,itext必须也是2.1.7以上,关键是itext官方的不能用,⊙﹏⊙b汗,要从jasper下载的包里找到lib,然后用里面的itext才行……



好了,开始代码:ireport设计jasper文件的就不说了



import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRHtmlExporterParameter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;
import net.sf.jasperreports.view.JasperViewer;

public class TestIreport {
    public String jasperPath = "F:/测试/report2.jasper";

    public static void main(String[] args) throws Exception {
        TestIreport ti = new TestIreport();
        // ti.getReportHTML();
        ti.getReportPdf();
        //ti.getReportExcel();
    }

    public void getReportPdf() throws Exception {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("REPORT_CONNECTION", getConn());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,
                param);

        JRPdfExporter exporter = new JRPdfExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
                "F:/测试/report2.pdf");
        exporter.exportReport();
    }

    public void getReportExcel() throws Exception {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("REPORT_CONNECTION", getConn());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,
                param);
        File destFile = new File(
                "F:/测试/report2.xls");
        JRXlsExporter exporter = new JRXlsExporter();
        exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
        exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, destFile
                .toString());
        exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,
                true);
        exporter.exportReport();
    }

    public void getReportHTML() throws Exception {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("REPORT_CONNECTION", getConn());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,
                param);
        // 使用 JRExporter 来生成 html , 很多参数可以查 api 或 ireport 的属性窗口
        JRExporter htmlExporter = new JRHtmlExporter();
        ByteArrayOutputStream htmlOut = new ByteArrayOutputStream();
        htmlExporter.setParameter(JRHtmlExporterParameter.JASPER_PRINT,
                jasperPrint);
        htmlExporter.setParameter(JRHtmlExporterParameter.OUTPUT_STREAM,
                htmlOut);
        htmlExporter.setParameter(JRHtmlExporterParameter.CHARACTER_ENCODING,
                "utf-8");
        htmlExporter
                .setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN,
                        Boolean.FALSE);
        htmlExporter.exportReport();
        File outFile = new File( "F:/测试/report2.html");
        FileOutputStream os = new FileOutputStream(outFile);
        os.write(htmlOut.toByteArray());
        os.close();
        htmlOut.close();
    }

    public void showReportApplet() throws Exception {
        Map<String, Object> param = new HashMap<String, Object>();
        param.put("REPORT_CONNECTION", getConn());
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperPath,
                param);
        JasperViewer.viewReport(jasperPrint, false);
    }

    public Connection getConn() {
        String driverClass = "com.mysql.jdbc.Driver";
        String conStr = "jdbc:mysql://127.0.0.1/tt";
        String user = "root";
        String password = "123";

        Connection conn = null;
        try {
            Class.forName(driverClass);
            conn = (Connection) DriverManager.getConnection(conStr, user,
                    password);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
}




遇到的问题:poi导致错误的忘记了,O(∩_∩)O哈哈~



Exception in thread "main" java.lang.NoClassDefFoundError: com/lowagie/text/DocumentException


at net.sf.jasperreports.engine.JasperExportManager.exportReportToPdfFile(JasperExportManager.java:121)


at jasperreportsdemoapp.Main.main(Main.java:67)


..............


这个就是开始说的itext包不正确导致的参考下面的网站解决掉了,呵呵


参考:http://blogs.sun.com/geertjan/entry/itext_and_jasper_using_them


其中注意一下提示的错误NoClassDefFoundError,并非是说你没有添加相关的jar包到classpath,而极可能是版本不对,参阅下面:


Difference between ClassNotFoundException and NoClassDefFoundError


http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror


最后提一下,jasper现在使用需要辅助jar包的情况:



JasperReports Requirements



http://jasperforge.org/website/jasperreportswebsite/trunk/documentation.html?header=project&target=jasperreports




[color=red]w[b]eb中应用jasperreport[/b][/color]:


[url]http://923080512.iteye.com/blog/1396484[/url]


在web中使用jasperreport 要导入的包:


jasperreports-4.5.0.jar


js_activation-1.1.jar


iText-2.1.7.jar


iTextAsian.jar


groovy-all-1.7.5.jar


commons-beanutils-1.8.2.jar


commons-digester-1.7.jar


commons-collections-3.2.1.jar


poi-3.7-20101029.jar


方法1:


String filename = ServletActionContext.getServletContext(). 
getRealPath("/ireport/report5_Javabean.jasper");
Map<String,Object> map = new HashMap<String,Object>();
map.put("SQLSTR", "select * from syz");
Collection<Syz> collection = service.findAll();
JRDataSource datasource = new JRBeanCollectionDataSource(collection);
ServletOutputStream out = response.getOutputStream();
//加载jasper文件,生成JasperReport实例 ;
JasperReport report = (JasperReport) JRLoader.loadObject(filename);
//填充报表,生成JasperPrint实例
JasperPrint print = JasperFillManager.fillReport(report,map,datasource);
//JRXlsExporter是excel导出器,JRPdfExporter 是pdf导出器,其他类型以此类推
JRAbstractExporter exporter = new JRXlsExporter();
//导出器设置参数
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
//导出
exporter.exportReport();



方法2:


byte[] b = null ; 
response.setContentType("application/pdf");
response.setHeader("Content-Disposition","filename="+
java.net.URLEncoder.encode("Syz_PDF"+new SimpleDateFormat("yyyyMMddHHmmssSS").format(new Date()), "UTF-8")
+ ".PDF");
//转换成pdf,如果是html,转换后直接response.sendRedirect()
b = JasperRunManager.runReportToPdf(filename, map, datasource);
out.write(b);
out.flush();
out.close();

标签:Web,exporter,java,Excel,HTML,参数,import,new,JRExporterParameter
From: https://blog.51cto.com/u_3871599/6410553

相关文章

  • Hadoop YARN - Introduction to the web services REST API’s
    HadoopYARN-IntroductiontothewebservicesRESTAPI’sOverviewURI’sHTTPRequestsSummaryofHTTPoperationsSecurityHeadersSupportedHTTPResponsesCompressionResponseFormatsResponseErrorsResponseExamplesSampleUsageOverviewTheHadoopYARNwebservice......
  • 2018WEB安全测试秋季预选赛WriteUp
    0x01input传送门:http://114.55.36.69:8003/题目上说前三道题目是容易的,于是就从容易的题目入手,为了拿到1血,手速飞快地点,emmm,一紧张忘了js输出语句怎么写了,百度后才发现,自己有多蠢alert啊!进入网址,发现一个输入框,查看源码,发现id="flag",后面有一段js代码<script>functionchec......
  • webgpu_快速入门
    /Users/song/Downloads/WebGPU视频教程/1.WebGPU快速入门/9.三角形拼接矩形/2.三角形拼接矩形.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edg......
  • webgpu_快速入门2
    /Users/song/Downloads/WebGPU视频教程/2.3D几何变换数学基础/9.片元的屏幕坐标/1.片元坐标/index.html<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE......
  • python基础学习-XPath解析html
    参考地址:Python-Core-50-Courses/第33课:用Python解析HTML页面.mdatmaster·jackfrued/Python-Core-50-Courses(github.com) XPath是在XML(eXtensibleMarkupLanguage)文档中查找信息的一种语法,XML跟HTML类似也是一种用标签承载数据的标签语言,不同之处在于XML的标签......
  • 既然 WebSocket 支持双向通信,功能看似比 HTTP 强大,那么我们是不是可以基于 WebSocket
    答:1.HTTP协议稳定易实现,大部分Web开发后台都没有主动发送数据给前端的需求2.WebSocket协议相对复杂,维护长连接也需要增加服务器资源开销,还要处理连接端开后重连问题因此,WebSocket并不能取代HTTP,它只适合在高实时的场景,需要服务器给客户端主动推......
  • HTTP、WebSocket、gRPC 或 WebRTC:哪种通信协议最适合您的应用程序?
    在为您的应用程序选择通信协议时,有很多不同的选择。在本文中,我们将了解四种流行的解决方案:HTTP、WebSocket、gRPC和WebRTC。我们将通过调查其背后的技术、它的最佳用途及其优缺点来探索每个协议。我们的通信方式在不断改进:变得更快、更方便、更可靠。我们的通信方式已经从使用信鸽......
  • Web安全测试—Web应用安全测试
    安全测试的目的是设法使每个使用应用的人确信,及时面临恶意输入,应用本身仍然可以想宣传的那样正常工作。Web安全测试就是使用多种工具(手动工具和自动工具),来模拟和激发Web应用的活动。。模拟跨站式脚本攻击等恶意输入,通过手动或脚本的方法提交给Web应用。以相同......
  • 【WebSocket】
    一、介绍WebSocket是基于TCP的一种新的网络协议。可以实现浏览器与服务器之间实时、双向的通信二、对比 WebSocketHTTP连接长连接短连接通信单向,基于请求响应模式(先请求,后响应)双向通信(无请求,可响应)底层TCP连接三、问题既然WebSocket支持......
  • Web安全测试—Web应用的结构
    Web应用的一种分类方法是依据它们所拥有的可访问接口的数量和种类。简单的架构就是将所有的功能封装在一个或两个组件中,复杂的架构会有若干个组件,最复杂的架构是将若干个组件应用捆绑在一起。常见组件最常见的Web应用都基于模型-视图-控制器(MVC)设计。这种部署型式的......