【iReport+JasperReport】3.在Java工程中用jasper导出Excel报表

上一次我们使用JasperReport导出了PDF格式的报表文件,我们这次利用同样的jasper文件,来在硬盘中导出Excel报表。

实现导出的Java的详细代码请查看上一篇,这里只修改最后的启动类代码。

我们先回顾一下jasper的实际效果:


然后我们修改一下启动类代码,之前打印pdf的代码为:
package com.cn.org.ireport.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;

public class TestReportHere {
    public static void main(String[] args) {
        Map parameters=new HashMap();
        ByteArrayOutputStream outPut=new ByteArrayOutputStream();
        FileOutputStream outputStream=null;
        File file=new File("F:/Temp/report.xls");
        String reportModelFile="C:/Users/jack/report2.jasper";
        
        try {
            JasperPrint jasperPrint=JasperFillManager.fillReport(reportModelFile,
                    parameters,new ReportDataSource("男"));
            JRAbstractExporter exporter=new JRPdfExporter();
            
            //创建jasperPrint
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            //生成输出流
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outPut);
            //屏蔽copy功能
            exporter.setParameter(JRPdfExporterParameter.IS_ENCRYPTED,Boolean.TRUE);
            //加密
            exporter.setParameter(JRPdfExporterParameter.IS_128_BIT_KEY,Boolean.TRUE);
            exporter.exportReport();
            outputStream=new FileOutputStream(file);
            outputStream.write(outPut.toByteArray());
        } catch (JRException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                outPut.flush();
                outPut.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
打印出的pdf效果为:


打印Excel报表,首先加入poi的依赖jar包(这里我使用的是poi-3.8-beta4-20110826.jar),然后将启动类代码中关于打印的逻辑修改,将JRPdfExporter改为JRXlsExporter,然后修改部分setParameter设置参数:
package com.cn.org.ireport.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRAbstractExporter;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

public class TestReportHere {
    public static void main(String[] args) {
        Map parameters=new HashMap();
        ByteArrayOutputStream outPut=new ByteArrayOutputStream();
        FileOutputStream outputStream=null;
        File file=new File("F:/Temp/report.xls");
        String reportModelFile="C:/Users/jack/report2.jasper";
        
        try {
            JasperPrint jasperPrint=JasperFillManager.fillReport(reportModelFile,
                    parameters,new ReportDataSource("男"));
        
        JRAbstractExporter exporter = new JRXlsExporter();
        //创建jasperPrint
            exporter.setParameter(JRExporterParameter.JASPER_PRINT,jasperPrint);
            //生成输出流
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,outPut);
            //去除两行之前的空白
            exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS,Boolean.TRUE);
            //设置所有页只打印到一个Sheet中
            exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET,Boolean.FALSE);
            //设置Excel表格的背景颜色为默认的白色
            exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND,Boolean.FALSE);
            exporter.exportReport();
            outputStream=new FileOutputStream(file);
            outputStream.write(outPut.toByteArray());
        } catch (JRException e) {
            e.printStackTrace();
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                outPut.flush();
                outPut.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
打印出的效果为:



效果可能没有pdf好看,这是因为原来我们只是设计为了打印pdf,如果要打印Excel,就要设计的更合理一些,这里我们仅仅为了演示效果。

其次JasperReport还可以打印出其他格式的报表,大家根据自己的需求去添加相应的jar包,修改部分逻辑即可,这里不再赘述。

转载请注明出处:http://blog.csdn.net/acmman/article/details/51828558

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
好的,这里给您提供一个iReport-5.6.0集成Java展示报表的示例代码,供您参考: 1. 首先,您需要在iReport-5.6.0设计好需要展示的报表,并将其导出成.jasper文件,假设该文件名为"myreport.jasper"。 2. 在Java项目,添加以下依赖: ``` <dependency> <groupId>net.sf.jasperreports</groupId> <artifactId>jasperreports</artifactId> <version>6.17.0</version> </dependency> ``` 3. 编写Java代码,加载.jasper文件并填充数据: ``` import java.io.InputStream; import java.util.HashMap; import java.util.Map; import net.sf.jasperreports.engine.JasperExportManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; public class ReportDemo { public static void main(String[] args) { try { // 加载.jasper文件 InputStream inputStream = ReportDemo.class.getResourceAsStream("/myreport.jasper"); JasperReport jasperReport = (JasperReport) net.sf.jasperreports.engine.util.JRLoader.loadObject(inputStream); // 填充数据,这里使用Map作为数据源 Map<String, Object> parameters = new HashMap<>(); parameters.put("parameter1", "value1"); parameters.put("parameter2", "value2"); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource()); // 导出报表,这里以PDF格式为例 JasperExportManager.exportReportToPdfFile(jasperPrint, "myreport.pdf"); } catch (Exception e) { e.printStackTrace(); } } } ``` 4. 运行Java代码,在项目根目录下生成myreport.pdf文件,即为展示的报表。 以上就是一个简单的iReport-5.6.0集成Java展示报表的示例代码,您可以根据自己的需要进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

光仔December

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值