Form page implements Open in Microsoft office function

发布时间 2023-08-10 13:05:49作者: 舜前喾后

Firstly, form code needs to implement the interface as follows:

[Form]
public class form_class extends FormRun implements OfficeIMenuCustomizer, OfficeIGenerateWorkbookCustomExporter
{
	...   
}

Finally, override the codes as follows:

public void customizeMenuOptions(OfficeMenuOptions _menuOptions)
{
    ListIterator dataEntityOptionsIterator = new ListIterator(_menuOptions.dataEntityOptions());
    
    while (dataEntityOptionsIterator.more())
    {
        OfficeMenuDataEntityOptions dataEntityOptions = dataEntityOptionsIterator.value();
        DictDataEntity dataEntity = new DictDataEntity(tablename2Id(dataEntityOptions.dataEntityName()));
        
        if (dataEntity.formRef() == menuItemDisplayStr(form_class))
        {
			dataEntityOptionsIterator.delete();       
        }
        else
        {
            dataEntityOptionsIterator.next();
        }
    }
    
    var menuItem = OfficeGeneratedExportMenuItem::construct(tableStr(entity_name), tableStr(entity_name));
    menuItem.displayName(strFmt("%1, (%2)", tablePName(entity_name), curExt()));
}

public ExportToExcelDataEntityContext getDataEntityContext(OfficeGeneratedExportMenuItem _menuItem)
{
    ExportToExcelDataEntityContext context = ExportToExcelDataEntityContext::constructDefault(_menuItem.dataEntityName());
}