SpreadJS V16 在线表格编辑器使用继续使用ExcelIO导入导出Excel
本帖最后由 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.children.children;2. 将导入导出Excel的选项和功能由新的导入方式value Excel替换为Excel IO
targetNode.children.children.children.children.items.value = "Excel IO"
targetNode.children.children.children.children.items.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.children.children;
// 默认value是Excel,使用新的导入导出选项,替换为Excel IO
targetNode.children.children.children.children.items.value = "Excel IO"
targetNode.children.children.children.children.items.value = "Excel IO"
// 也可以新增一个item
// targetNode.children.children.children.children.items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
// targetNode.children.children.children.children.items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
DesignerNS.registerTemplate(fileMenuTemplateName, template);
也可以同时开启两种导入Excel的方式,这种情况不需要重写getFileMenuOption修改默认值了
targetNode.children.children.children.children.items.splice(1,0,{text:"ExcelIO", value:"Excel IO"});
targetNode.children.children.children.children.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);
});
官网的实例还是IO导出,请问有没有16.1.4的demo呢 阿仁 发表于 2023-7-31 09:55
官网的实例还是IO导出,请问有没有16.1.4的demo呢
没太理解您的意思,目前官网的在线Excel编辑器没有使用ExcelIO,而是open的接口。
16.1.4的demo具体指的是什么呢?
页:
[1]