找回密码
 立即注册

QQ登录

只需一步,快速开始

Sakuoz

注册会员

2

主题

6

帖子

22

积分

注册会员

积分
22
  • 45

    金币

  • 2

    主题

  • 6

    帖子

最新发帖
Sakuoz
注册会员   /  发表于:2024-11-1 12:00  /   查看:233  /  回复:8
10金币
本帖最后由 Sakuoz 于 2024-11-1 14:22 编辑

第一次使用spreadJS,看了文档和开发者社区,还是没找到想要的答案,所以直接来这里提问了

1、gc-spread-sheets-designer 组件和 gc-spread-sheets 组件区别在哪里?我看好像都可以显示出完整的表格,那他们的使用场景分别是什么?

2、Vue3 中如何获取 gc-spread-sheets-designer 组件的 Designer 对象?通过 @designer-initialized 方法返回的对象获取的 Designer 对象为 undefined,如下图

image.png773678893.png

然后又搜索到这个链接 SpreadJS 在 https://gcdn.grapecity.com.cn/showtopic-226752-1-4.html) 提供的 designer.getHost() 方法,然后再用GC.Spread.Sheets.Designer.findControl(this.designer 获取实例,但是会提示 designer.getHost is not a funtion,还是无法获取

3、如果想修改文件选项卡的内容,目前通过这个链接
https://demo.grapecity.com.cn/spreadjs/help/docs/faqs/spreadjsDesigner/common-import-excel-issues 已经知道如何修改了,现在通过DesignerNS.getTemplate打印出来的配置项只有复选和输入框的类型,但是想实现下拉框、单选框或者日期选择要如何设置参数呢

开发环境: maxOS M1, Vue v3.4.21,@grapecity-software/xxx v17.1.8

目前是未授权状态,公司现在已经确定要购买了,是否是因为没有授权的原因才获取不到?

最佳答案

查看完整内容

1、gc-spread-sheets-designer的界面更贴近Excel的界面,与gc-spread-sheets的最主要区别在于界面上方的Ribbon。 2、请确保正确引入Designer的vue支持包: 3、我不建议您直接用设计器的Template来实现业务上的逻辑,设计器的Template中很多规则并未公开出来,可参考的相关资料较少,最好是设置一个按钮,点击后弹出自定义的Dialog来实现。

8 个回复

倒序浏览
最佳答案
最佳答案
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-1 12:00:37
来自 2#
1、gc-spread-sheets-designer的界面更贴近Excel的界面,与gc-spread-sheets的最主要区别在于界面上方的Ribbon。

2、请确保正确引入Designer的vue支持包:

image.png234780272.png

image.png673101806.png

image.png24109190.png

3、我不建议您直接用设计器的Template来实现业务上的逻辑,设计器的Template中很多规则并未公开出来,可参考的相关资料较少,最好是设置一个按钮,点击后弹出自定义的Dialog来实现。

评分

参与人数 1满意度 +5 收起 理由
Sakuoz + 5

查看全部评分

回复 使用道具 举报
Sakuoz
注册会员   /  发表于:2024-11-1 14:34:05
3#
好的,感谢回复

意思是想要实现下图的效果现在还不能达到是吗?那可以拦截保存事件,弹出自定义dialog吗

1730442683397.jpg736215514.png
回复 使用道具 举报
Sakuoz
注册会员   /  发表于:2024-11-1 14:40:22
4#
Joestar.Xu 发表于 2024-11-1 14:18
1、gc-spread-sheets-designer的界面更贴近Excel的界面,与gc-spread-sheets的最主要区别在于界面上方的Rib ...

麻烦看楼上回复,直接回复不能贴本地图片
另外Designer已经引入了,不是获取不到designer-initialized方法返回的数据,是返回的数据上没有designer这个对象

比如下面这段代码,删除文件菜单项

  1. var fileMenuPanelTemplate = GC.Spread.Sheets.Designer.getTemplate(
  2.   GC.Spread.Sheets.Designer.TemplateNames.FileMenuPanelTemplate
  3. );
  4. fileMenuPanelTemplate.content[0].children[0].children[0].children[0].children[1].items.splice(
  5.   0,
  6.   1
  7. );
  8. fileMenuPanelTemplate.content[0].children[0].children[1].children.splice(0, 1);
复制代码


TemplateNames.FileMenuPanelTemplate不是绑定在Designer上的吗,现在只能拿到xx.Sheets,xx.Sheets.Designer会返回undefined
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-1 14:42:18
5#
目前很难实现,保存事件还无法拦截。

理论上来说您完全可以自定义一个保存的界面,里面可以嵌入任何您需要的业务数据结构,然后自己定义一个按钮用于导出或保存。

使用原生的Template只适合非常基础的操作,一旦涉及稍微复杂的逻辑就会较难实现。
回复 使用道具 举报
Sakuoz
注册会员   /  发表于:2024-11-1 14:49:03
6#
Joestar.Xu 发表于 2024-11-1 14:42
目前很难实现,保存事件还无法拦截。

理论上来说您完全可以自定义一个保存的界面,里面可以嵌入任何您需 ...

我一开始就是想自定义一个保存的界面,但不是说不建议用设计器的Template实现吗?那还有其他可以实现的api吗,麻烦给个参考,感谢!
其实上图的效果已经在其他的网站上见到过,用的也是spreadJS,但是不知道具体的实现方式,之前一直以为是通过设计器的Template实现的
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-1 14:53:58
7#
您这边具体要实现的是一个什么样的需求?

评分

参与人数 1满意度 +5 收起 理由
Sakuoz + 5

查看全部评分

回复 使用道具 举报
Sakuoz
注册会员   /  发表于:2024-11-1 15:02:48
8#
本帖最后由 Sakuoz 于 2024-11-1 15:05 编辑
Joestar.Xu 发表于 2024-11-1 14:53
您这边具体要实现的是一个什么样的需求?

就是3楼回复的图片,在保存上增加其他的控件,然后获取控件的数据保存成excel

或者按你说的自定义一个保存的界面,如何在上面自定义保存界面呢,简单说下思路或者相关的api都可以,感谢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-11-1 17:52:02
9#
在文件页面想要实现3楼的图片比较困难,其中使用的控件较多。

我建议您可以自己在设计器的Ribbon上添加一个按钮,当用户点击这个按钮时弹出dialog(如3楼图),然后点击dialog的button时执行导出。

导出的API可以使用save或export。

Ribbon上添加按钮的文档请参考:https://demo.grapecity.com.cn/sp ... menu-bar/new-ribbon
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部