导出操作

ExportAction 是一个基本 列操作,使用定义的导出器导出表格的内容。此操作需要一个 TableExporter 实例。

此操作只可用于列表组件(TableGroupTableTreeTableDataGridTreeDataGridTree)。

ExportAction 提供方法用于管理获取 TableDataGrid 列值的方法。

  • addColumnValueProvider() 添加一个方法,用于从列中获取值。

  • removeColumnValueProvider() 删除一个获取列值的方法。

ExportAction 有两种导出模式:所有行或选中行。如果没有选中行,则默认导出所有行。

export action

可以通过在 消息包 添加 actions.exportSelectedTitleactions.exportSelectedCaption 消息覆盖默认的弹窗标题和消息。

自定义导出操作

可以通过继承 ExportAction 自定义操作。

下面示例创建自定义导出操作:

@ActionType(CustomExportAction.ID)
public class CustomExportAction extends ExportAction {
    public static final String ID = "myExcelExport";

    public CustomExportAction(String id) {
        this(id, null);
    }

    public CustomExportAction() {
        this(ID);
    }

    public CustomExportAction(String id, String shortcut) {
        super(id, shortcut);
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {
        super.setApplicationContext(applicationContext);
        withExporter(CustomExporter.class); (1)
    }

    @Override
    public String getIcon() {
        return "font-icon:CHECK";
    }
}
1 如果需要,你可以使用 自定义 表格导出器。

现在可以在界面控制器使用该操作:

@Autowired
protected Table<Customer> customersTable;

@Autowired
protected Button customBtn;

@Autowired
protected ApplicationContext applicationContext;

@Autowired
protected Actions actions;

@Subscribe
protected void onInit(InitEvent event) {
    CustomExportAction customAction = actions.create(CustomExportAction.class);

    customAction.setTableExporter(applicationContext.getBean(CustomExporter.class));
    customAction.setTarget(customersTable);
    customAction.setApplicationContext(applicationContext);

    customBtn.setAction(customAction);
}

ExcelExportAction

ExcelExportAction 操作继承了 ExportAction 用于以 XLSX 格式导出表格内容。

此操作由 io.jmix.uiexport.action.ExcelExportAction 类实现,在 XML 中的列表组件,需要使用 type="excelExport" 操作属性进行定义。可以使用 action 元素的属性配置通用的操作参数。参阅 声明式定义操作 了解详情。

示例:

<actions>
    <action id="excelExport" type="excelExport"/>
</actions>

或者,可以在界面控制器注入该操作,然后用 setter 配置:

@Named("customersTable.excel")
protected ExcelExportAction customersTableExcel;

@Subscribe
protected void onInit(InitEvent event) {
    customersTableExcel.setCaption("Export to Excel");
}

你可以覆盖本地化的数据格式字符串。Excel 导出的默认格式字符串定义如下:

excelExporter.true=Yes
excelExporter.false=No
excelExporter.empty=[Empty]
excelExporter.bytes=<bytes>
excelExporter.timeFormat=h:mm
excelExporter.dateFormat=m/d/yy
excelExporter.dateTimeFormat=m/d/yy h:mm
excelExporter.integerFormat=#,##0
excelExporter.doubleFormat=#,##0.00##############

XLS 格式只支持最多 65536 行表格数据。如果导出的表格包含超过 65536 行的数据,超出的数据将不会导出,这里也会弹出警告消息。

JsonExportAction

JsonExportAction 操作继承了 ExportAction 用于以 JSON 格式导出表格内容。

此操作由 io.jmix.uiexport.action.JsonExportAction 类实现,在 XML 的列表组件中,需要使用 type="jsonExport" 操作属性进行定义。可以使用 action 元素的属性配置通用的操作参数。参阅 声明式定义操作 了解详情。

示例:

<actions>
    <action id="jsonExport" type="jsonExport"/>
</actions>

或者,可以在界面控制器注入该操作,然后用 setter 配置:

@Named("customersTable.json")
protected JsonExportAction customersTableJson;

@Subscribe
protected void onInit(InitEvent event) {
    customersTableJson.setCaption("Export to JSON");
}