本帖最后由 dexteryao 于 2023-1-28 15:28 编辑
SpreadJS V16 推出了全新的导入Excel方式,无需先转换JSON再导入.
SpreadJS V16 设计器保留原有使用Excel IO导入导入导出Excel的方式,可以通过以下方式开启。
1. 获取文件菜单模板
- let DesignerNS = GC.Spread.Sheets.Designer, fileMenuTemplateName = DesignerNS.TemplateNames.FileMenuPanelTemplate;
- let template = DesignerNS.getTemplate(fileMenuTemplateName), targetNode = template.content[0].children[0].children[1];
复制代码 2. 将导入导出Excel的选项和功能由新的导入方式value Excel替换为Excel IO
- targetNode.children[1].children[1].children[0].children[0].items[0].value = "Excel IO"
- targetNode.children[2].children[1].children[0].children[0].items[0].value = "Excel IO"
复制代码 3. 由于Excel是一个选项,需要将导入导出方式的默认值也修改为Excel IO
context.getData("fileMenuSetting")中放的是用户上一次选择内容,如果选过就不替换了
所有代码如下
- // 由于导入Excel是第一个选项,需要修改一下初始的默认值,如果不是放到第一个,这个就不需要了
- let getFileMenuOption = GC.Spread.Sheets.Designer.FileMenuHandler.getFileMenuOption;
- GC.Spread.Sheets.Designer.FileMenuHandler.getFileMenuOption = function(context){
- let fileMenuSetting = context.getData("fileMenuSetting");
- let option = getFileMenuOption.call(this, context);
- console.log(option)
- if(!fileMenuSetting || !fileMenuSetting.activeCategory_import){
- option.activeCategory_import = "Excel IO"
- }
- if(!fileMenuSetting || !fileMenuSetting.activeCategory_export){
- option.activeCategory_export = "Excel IO"
- }
- return option;
- }
- let DesignerNS = GC.Spread.Sheets.Designer, fileMenuTemplateName = DesignerNS.TemplateNames.FileMenuPanelTemplate;
- let template = DesignerNS.getTemplate(fileMenuTemplateName), targetNode = template.content[0].children[0].children[1];
- // 默认value是Excel,使用新的导入导出选项,替换为Excel IO
- targetNode.children[1].children[1].children[0].children[0].items[0].value = "Excel IO"
- targetNode.children[2].children[1].children[0].children[0].items[0].value = "Excel IO"
- // 也可以新增一个item
- // targetNode.children[1].children[1].children[0].children[0].items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
- // targetNode.children[2].children[1].children[0].children[0].items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
- DesignerNS.registerTemplate(fileMenuTemplateName, template);
复制代码
也可以同时开启两种导入Excel的方式,这种情况不需要重写getFileMenuOption修改默认值了
- targetNode.children[1].children[1].children[0].children[0].items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
- targetNode.children[2].children[1].children[0].children[0].items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
复制代码
使用Excel IO导入的方式可以监听FileLoading,获取到SpreadJS ssjson
- designer.bind(GC.Spread.Sheets.Designer.Events.FileLoading, function(s, e){
- console.log(s, e);
- });
复制代码
|
|