jasperprint java_Java 中jasperReport实现动态列打印的实现代码

Java 中jasperReport实现动态列打印的实现代码

以下代码中注释说明很清楚,希望能帮助到大家,大家参考下。

示例代码:

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 projectList = getEntityManager().queryPrintProjectInfo(printValue);

// 将数据转换为Map对象,换化成Map对象

List reportDataList = new ArrayList();

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 columnHeadBa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 JSP 页面使用 JasperReport,可以按照以下步骤: 1. 在你的项目导入 JasperReport 的相关库文件。 2. 创建一个 JasperReport 报表模板文件,可以使用 JasperReport 的设计工具 iReport 进行创建。 3. 在 JSP 页面编写代码,创建一个 JasperReport 报表,并填充数据。 4. 将 JasperReport 报表输出到指定的输出流。 下面是一个简单的示例代码,演示如何在 JSP 页面使用 JasperReport: ```java <%@ page import="java.util.*" %> <%@ page import="java.io.*" %> <%@ page import="net.sf.jasperreports.engine.*" %> <%@ page import="net.sf.jasperreports.engine.export.*" %> <%@ page contentType="application/pdf" %> <% // 创建一个 JasperReport 报表 JasperReport jasperReport = JasperCompileManager.compileReport("report_template.jrxml"); // 填充数据 Map<String, Object> params = new HashMap<String, Object>(); params.put("parameter1", "value1"); params.put("parameter2", "value2"); JRDataSource dataSource = new JREmptyDataSource(); JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource); // 输出 JasperReport 报表到指定的输出流 OutputStream out = response.getOutputStream(); JasperExportManager.exportReportToPdfStream(jasperPrint, out); %> ``` 在这个示例代码,我们首先创建了一个 JasperReport 报表,并填充了一些数据。然后,我们将 JasperReport 报表输出到一个 PDF 文件。在这个例子,我们将 PDF 文件直接输出到了 JSP 页面的输出流,因此最后生成的 PDF 文件将直接在浏览器显示出来。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值