润乾报表页面超过255列导出excel



最近接触到一些客户的需求,客户想在页面展现的时候不分页,然后在导出excel的时候分页,而客户的报表列数很多,超过了excel的255列的限制。这样如果不做任何处理,直接在页面上点击导出excel的按钮,就会弹出对话框提示excel不支持超过255列,也就无法正常导出,所以要想导出这样的报表就必须采取一些特殊的设置,下面就做一个简单的例子,实现超过255列的不分页报表导出excel。

有两种办法可以实现上面的需求,分别为:

1.展现时候展现一张不分页的,导出的时候导出另外一张报表,在导出的时候调用API导出那个分页的报表。

2.在jsp中设置width=”-1″ ,excelUsePaperSize=”yes”然后把报表设置成按纸分页的,也可以正常导出excel。

下面分别介绍一下这两种方法的实现过程:

第一种:调用API的方法。

第一步:制作一张超过255列的报表,(这里直接用to(1,300)函数实现了)

保存这个报表为300col.raq。

第二步:设置分页。

点击属性-报表属性-分页,设置分页方式为按纸分页,然后另存这个报表为300col1.raq

第三步:编写导出的API

导出excel的API内容如下:

<%@ page language=”java” contentType=”text/html; charset=gbk”
pageEncoding=”gbk”%>
<%@page
import=”com.runqian.report4.usermodel.*,com.runqian.report4.util.*,com.runqian.report4.model.ReportDefine”%>
<%@ page import=”java.io.*,com.runqian.report4.usermodel.DataSetConfig
“%>
<%
Context cxt = new Context();
String reporthome = Context.getInitCtx().getMainDir();
String path = application.getRealPath(reporthome);
String raq = path+File.separator+”300col1.raq”;
ReportDefine rd = (ReportDefine) ReportUtils.read(raq);
Engine engine = new Engine(rd,cxt);
IReport ir = engine.calc();
ReportUtils.exportToExcel(path+File.separator+”300col.xls”,ir,true);
%>

在发布不分页的报表(也就是300col.raq)的jsp中调用上面的jsp,将300col1.raq导出,就可以实现导出超过255列excel的需求了。

第二种:使用标签实现。

在展现报表jsp的润乾标签中加入如下两个内容: width=”-1″ , excelUsePaperSize=”yes”,width=”-1″的含义是页面展现的时候纸张宽度无线大,这样展现的时候就不分页了,而excelUsePaperSize=”yes”的含义是导出excel的时候按照设置的纸张大小来分页,jsp的内容如下:

<%@ page contentType=”text/html;charset=GBK” %>
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>

<% //这里为两种方法准备图片连接的公共部分
String appmap = request.getContextPath();
String printImage = “<img alt=打印 src=’” + appmap + “/images/print.gif’ border=no style=’vertical-align:middle’>”;
String wordImage = “<img alt=导出Word src=’” + appmap + “/images/doc.gif’ border=no style=’vertical-align:middle’>”;
String excelImage = “<img alt=导出excel src=’” + appmap + “/images/excel.gif’ border=no style=’vertical-align:middle’>”;
String pdfImage = “<img alt=导出PDF文件 src=’” + appmap + “/images/pdf.gif’ border=no style=’vertical-align:middle’>”;
String firstPageImage = “<img src=’” + appmap + “/images/firstpage.gif’ border=no style=’vertical-align:middle’>”;
String lastPageImage = “<img src=’” + appmap + “/images/lastpage.gif’ border=no style=’vertical-align:middle’>”;
String nextPageImage = “<img src=’” + appmap + “/images/nextpage.gif’ border=no style=’vertical-align:middle’>”;
String prevPageImage = “<img src=’” + appmap + “/images/prevpage.gif’ border=no style=’vertical-align:middle’>”;
String submitImage = “<img alt=保存到数据库 src=’” + appmap + “/images/savedata.gif’ border=no style=’vertical-align:middle’>”;
String importExcelImage = “<img alt=导入Excel文件 src=’” + appmap + “/images/importExcel.gif’ border=no style=’vertical-align:middle’>”;
%>
<form id=”form1″ action=”excel.jsp”>
<table align=center>
<tr><td>
<input type=”button” οnclick=”form1.action” value=”导出excel”>
<report:html name=”report1″ reportFileName=”300col.raq”
needSaveAsWord=”yes”
needSaveAsPdf=”yes”
needSaveAsExcel=”yes”
width=”-1″
excelUsePaperSize=”yes”
wordLabel=”<%=wordImage%>”
pdfLabel=”<%=pdfImage%>”
submit=”<%=submitImage%>”

/>
</td></tr>
</table>
</form>

使用上面的jsp发布第一种方法制作的300col1.raq,点击导出excel的按钮,选择分页方式导出。

点击确定,就会导出按纸分页的excel了,这样在页面上导出超过255列不分页报表的excel就实现了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值