ireport new java.lang.boolean,润乾集算报表应用开发之Excel及PDF导出

报表应用中有时报表只需生成指定文件,而无需在页面展现,生成的文件常见于Excel、PDF等。由于报表不展现,也就无需使用报表提供的tag,可以直接通过程序导出。集算报表提供了丰富的API,允许开发人员编写代码实现自己的业务逻辑。这里通过在servlet中导出Excel为例来看一下报表不展现而直接导出的实现方式。

定义导出Excel的servlet(ExportToExcel),主要代码如下:

1、接收参数

String report = request.getParameter("rpx");

String year = request.getParameter("year");

2、读入报表

String reportFile =

request.getSession().getServletContext().getRealPath("/reportFiles/"+report);

3、读入并计算报表

Context cxt = new Context();

ReportDefine rd =

(ReportDefine)ReportUtils.read(reportFile);

cxt.setParamValue("year", year);

Engine engine = new Engine(rd, cxt);

IReport iReport = engine.calc();

4、导出Excel

ReportUtils.exportToExcel("D:/result.xls", iReport,

true);

导出的Excel效果如下:

a4c26d1e5885305701be709a3d33442f.png

集算报表提供了多个导出Excel的方法,除了可以导出xls格式,也可以导出xlsx格式文件,开发人员可以根据需求选择导出Excel的方法:

ReportUtils.exportToExcel(java.io.OutputStream

os, IReport report, boolean pageBroken);

ReportUtils.exportToExcel(java.io.OutputStream

os, IReport report, boolean pageBroken, int dispRatio);

ReportUtils.exportToExcel(java.lang.String

fileName, IReport report, boolean pageBroken);

ReportUtils.exportToExcel(java.lang.String

fileName, IReport report, boolean pageBroken, int

dispRatio);

ReportUtils.exportToExcel

2007(java.lang.String fileName,IReport report,boolean

pageBroken)

ReportUtils.exportToExcel

2007(java.io.OutputStream os,IReport report,boolean

pageBroken)

导出PDF与导出Excel类似,调用相应导出PDF的方法即可,集算报表提供导出PDF的方法包括:

ReportUtils.exportToPDF(java.io.OutputStream

os, IReport report);

ReportUtils.exportToPDF(java.io.OutputStream

os, IReport report, boolean pageBroken, boolean

graphicOut)

ReportUtils.exportToPDF(java.lang.String

fileName, IReport report);

ReportUtils.exportToPDF(java.lang.String

fileName, IReport report, boolean pageBroken, boolean

graphicOut)

【附】导出Excel完整代码

package

com.runqian.servlet;

import

java.io.File;

import

java.io.IOException;

import

java.io.PrintWriter;

import

javax.servlet.ServletException;

import

javax.servlet.http.HttpServlet;

import

javax.servlet.http.HttpServletRequest;

import

javax.servlet.http.HttpServletResponse;

import

com.raqsoft.report.model.ReportDefine;

import

com.raqsoft.report.usermodel.Context;

import

com.raqsoft.report.usermodel.Engine;

import

com.raqsoft.report.usermodel.IReport;

import

com.raqsoft.report.usermodel.ParamMetaData;

import

com.raqsoft.report.util.ReportUtils;

public

class ExportToExcel extends HttpServlet

{

public ExportToExcel() {

super();

}

public void destroy() {

super.destroy(); // Just puts "destroy" string in

log

// Put your code here

}

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

String report = request.getParameter("rpx");

String year = request.getParameter("year");

//保证报表名称的完整性

int iTmp = 0;

if( (iTmp = report.lastIndexOf(".rpx")) <= 0

){

report = report + ".rpx";

iTmp = 0;

}

String reportFile =

request.getSession().getServletContext().getRealPath("/reportFiles/"+report);

Context cxt = new Context();

try {

ReportDefine rd =

(ReportDefine)ReportUtils.read(reportFile);

cxt.setParamValue("year", year);

Engine engine = new Engine(rd,

cxt); //构造报表引擎

IReport iReport =

engine.calc(); //运算报表

ReportUtils.exportToExcel("D:\\result.xls", iReport,

true);

} catch (Throwable e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void doPost(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("");

out.println("");

out.println("

");

out.println("

");

out.print(" This is ");

out.print(this.getClass());

out.println(", using the POST method");

out.println("

");

out.println("

");

out.flush();

out.close();

}

public void init() throws ServletException

{

// Put your code here

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值