【仅供内部供应商使用,不提供对外解答和培训】

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

一、特殊名词介绍

二、背景、场景介绍

帆软报表产品中允许用户自行对导出文件类型进行扩展,一般会配合ToolbarItemProvider接口在设计器上添加工具栏选项。而ExtensionButtonProvider接口则对应的用于报表自带的导出菜单按钮的选项扩展。

三、接口介绍

ExtensionButtonProvider.java
package com.fr.report.fun;

import com.fr.form.ui.Widget;
import com.fr.stable.fun.mark.Mutable;
import com.fr.stable.xml.XMLable;

/**
 * 
 * @author focus
 * @date Jul 1, 2015
 * @since 8.0
 * 导出菜单接口,用于添加其他的导出方式,菜单目前只支持两级目录
 * 
 */
public interface ExtensionButtonProvider extends XMLable, Mutable{

	int CURRENT_LEVEL = 2;
	String XML_TAG = "ExtensionButtonProvider";
	
    /**
     * 导出菜单的实现类,该类可以继承自com.fr.form.ui.ToolBarMenuButton 或者 com.fr.form.ui.ToolBarButton;
     * @return 控件类
     */
    Class<? extends Widget> classForDirectoryButton();
	
    /**
     * 父目录
     * @return 父目录名称
     */
	 String getParentDirectory();
	
	/**
	 * 本层目录名称
	 * 
	 * @return 同上
	 */
	 String getType();
	
	/**
	 * 菜单项在设计器端对应的checkbox名称(用以控制是否在web端显示)
	 * 
	 * @return 同上
	 */
	 String getRelatedCheckBoxTitle();
	
	/**
	 * 该目录是否在web段显示
	 * 
	 * @return 同上
	 */
	 boolean isSelected();
	
	/**
	 * 设置目录是否在web端显示
	 * 
	 * @param isSelected 是否显示
	 */
	 void setSelected(boolean isSelected);
	
}

四、支持版本

产品线

版本

支持情况

备注

FR8.0支持
FR9.0支持
FR10.0支持
BI3.6支持不支持BI的仪表板
BI4.0支持不支持BI的仪表板
BI5.1支持不支持BI的仪表板
BI5.1.2支持不支持BI的仪表板
BI5.1.3支持不支持BI的仪表板

五、插件注册

plugin.xml
<extra-report>
        <ExtensionButtonProvider class="your class name"/>
</extra-report>

六、原理说明

在excel07实际导出时都是继承的StreamExcel2007Exporter,在该类中的innerExportReport方法执行时会调用StreamExcelReportExporter执行具体的导出,在StreamExcelReportExporter的导出方法export()中会读取插件中申明的所有CommentExcelProcessor接口进行导出处理。

导入excel时,ExcelReportImporter#importExcel2BookBySheet会先读取插件中的CommentExcelProcessor接口调用importExcelMatchComment接口方法判断是否要执行导入的特殊处理(默认不执行),如果需要执行,则在Excel2007ReportImporter#traverseByRows方法中会调用CommentExcelProcessor接口的convertCommentToTooltip方法,对导入的值进行调整。

七、特殊限制说明

这是一个Immutable的接口,一个工程中只能生效一个,否则会产生冲突。

该接口仅对excel07的导入导出支持

导出时,只需要实现addCellComment接口方法即可

导入时,由importExcelMatchComment(ECReport excelReport, WriteECReport curReport, FineBook fineBook)和convertCommentToTooltip接口共同进行控制生效。

该接口涉及到对报表对象的各种操作,需要对报表对象结构本身有一定的了解。在demo示例中,给出了一些基本的方法,可以作为参考。更多的报表对象结构知识,会在其他章节中进行详细的介绍

八、常用链接

demo地址:demo-extension-button-provider



九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。

暂无

  • No labels