润乾报表对导出的 excel 文件中 sheet 命名
导出 excel 时,我们可以选择导出的 excel 是否分页,如果分页,报表就会被分成若干个 sheet 来保存,这些 sheet 会自动命名成为 sheet1,sheet2…,但是有些时候这样的命名不能满足用户的需求,用户需要从每个 sheet 名字中看出相应的信息,如订单明细1,本文就来介绍一下如何设置 sheet 名字。
下面就说一下用标签发布报表和用 API 发布报表设置 sheet 名字的方法。
一.用标签发布报表时设置 sheet 名字的方法:
用润乾提供的标签发布报表时,给标签“saveAsName”设置一个属性值就可以了,sheet 的名字就用“saveAsName”的值命名,如果报表分页了,则系统会自动在 sheetName 后面加上 1、2、3。如下标签
<report:html name=”report1″
reportFileName=”<%=report%>”
needPageMark=”yes”
needSaveAsExcel=”yes”
saveAsName=” 订单明细” // 报表另存为 Excel、PDF 或离线填报时
// 的文件名(不用带扩展名), 默认值与报表同名
/>
二.用 API 发布报表设置 sheet 名字的方法
本示例导出 Excel 的 JSP 如下:
<%@ page contentType=”text/html;charset=GBK” %>
<jsp:directive.page import=”com.runqian.report4.usermodel.Context”/>
<jsp:directive.page import=”java.io.File”/>
<jsp:directive.page import=”com.runqian.report4.util.ReportUtils”/>
<jsp:directive.page import=”com.runqian.report4.usermodel.*”/>
<jsp:directive.page import=”com.runqian.report4.view.excel.ExcelReport”/>
<jsp:directive.page import=”com.runqian.report4.model.ReportDefine”/>
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
<%
String reportFileHome=Context.getInitCtx().getMainDir();
String raqName = request.getParameter(“raq”);
String path = application.getRealPath(reportFileHome+ File.separator +raqName);
Context cxt = new Context(); // 构建报表引擎计算环境
ReportDefine rd = (ReportDefine)ReportUtils.read(path);// 读取报表
Engine engine = new Engine(rd, cxt); // 构造报表引擎
IReport iReport = engine.calc(); // 运算报表
// 定义导出 excel 的 report 对象
ExcelReport excelReport = new ExcelReport();
// 输出不分页的报表对象,第一个参数为 sheet 的名字
excelReport.export(“订单明细”,iReport);
// 生成 excel 文件,保存在 d 盘
excelReport.saveTo(“d:\\ 订单明细.xls”);
%>
上面是设置不分页报表的方法,如果报表分页,要用下面的方法为 excel 中的 sheet 命名
PageBuilder pageBuilder = new PageBuilder(iReport);// 定义一个分页报表的对象
er.export(sheetName, pageBuilder); // 自定义 sheet 名称输出 PageBuilder,如 PageBuilder 有多页,则系统会自动在 sheetName 后面加上 1、2、3
如果以后遇到类似情况,就可以按照上面的方法实现了。