润乾报表对导出的 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

如果以后遇到类似情况,就可以按照上面的方法实现了。