请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

cmbsjdev

中级会员

82

主题

278

帖子

816

积分

中级会员

积分
816
cmbsjdev
中级会员   /  发表于:2021-9-16 15:16  /   查看:3465  /  回复:13
1金币
本帖最后由 Clark.Pan 于 2021-9-17 16:38 编辑

你好,请问一下,如何将一个excel分为两部分拆分,模板+数据。即如图片所示,将这个excel定义的模板存为一个excel文件。下边填写的数据存到二维表中。这个数据的获取和填充除了用getValue和setValue方法外,还有什么比较智能的方法吗?可以自动绑定之前定义的模板,其填写的数据怎么可以快速填充进去?
SpreadJS设计器.JPEG

最佳答案

查看完整内容

最能表现问题的就是这个例子了。 https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/data-binding/table-binding/purejs 您可以理解,下图所示的这个状态就是SpreadJS单独加载了模板之后的状态 之后点击右边的setDataSource才会加载数据源。这就是一个模板与数据分离的典型例子。 ssjson保存的模板无非就是上述截图的部分,将其序列化之后保存起来。

13 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-16 15:16:43
来自 6#
最能表现问题的就是这个例子了。
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/data-binding/table-binding/purejs
您可以理解,下图所示的这个状态就是SpreadJS单独加载了模板之后的状态 image.png615426330.png
之后点击右边的setDataSource才会加载数据源。这就是一个模板与数据分离的典型例子。
ssjson保存的模板无非就是上述截图的部分,将其序列化之后保存起来。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-16 17:14:05
2#
首先这个不是GcExcel的功能,是SpreadJS的功能,SpreadJS中通过SpreadJS设计器设计好模板,然后保存成ssjson,这个就是空模板。
每次加载模板后在调用数据绑定的setDataSource代码填充数据源,这样就实现了模板与数据分离
回复 使用道具 举报
cmbsjdev
中级会员   /  发表于:2021-9-16 17:19:49
3#
现在场景是一个excel中,里面定义了模板属性,存储的时候分为模板成一个单独的excel,数据存成单独一份。现在是要区分开来哪些是模板,哪些是填充的数据。获取的方法是什么?如果空模板是ssjson文件的话如何和后端交互?我们这边现在的设想是将完整的excel文件存到后端,后端gcexcel去拆分出来模板和填充的数据,分开存储。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-16 17:35:33
4#
首先,没必要这么做,前端设计器生成的模板文件就是模板和数据分离的。如果您后端要保存,那就考虑怎样将这个ssjson文件保存就行了,不需要去通过GcExcel做拆分。前端每次加载显示的时候分两个步骤一个是加载模板,一个是数据绑定填充数据。这样本身就是数据与模板分离的方式。
回复 使用道具 举报
cmbsjdev
中级会员   /  发表于:2021-9-17 08:37:29
5#
模板和数据是在同一个excel中,保存ssjson文件的话,保存的不是一个整体吗?前端跟后端进行数据交互的时候,如何把模板单独的ssjson文件保存?有没有类似的例子可以提供参考一下
回复 使用道具 举报
cmbsjdev
中级会员   /  发表于:2021-9-17 10:32:49
7#
上面例子的模板是以对象及其属性的形式绑定。这个和在线编辑器上自定义的模板有什么区别吗?如图片所示的,这种自定义的字段是否能进行数据绑定
模板.JPEG
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-17 12:17:49
8#
没区别,一个是代码设置,一个是UI设置
回复 使用道具 举报
cmbsjdev
中级会员   /  发表于:2021-9-17 14:36:32
9#
我刚才试了一下,如果是UI设置成bindingpath为字段,这个表格有两列分别为字段1和字段2,在用setDataSource进行数据绑定的时候。对象的命名和其属性都需要分别对应上。    public static class SalesData {
        public ArrayList<SalesRecord> 字段;
    }

    public static class SalesRecord {
        public String 字段1;
        public String 字段2;
    }
除了这种属性名要对应上,还有没有其他方法。这种定义的中文变量不合理吧
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-17 15:44:01
10#
这里的bindingpath就是数据源的key,同理UI操作也是一样
image.png25680235.png
上述也都是数据源的key,建议设置成英文。至于中文显示,完全可以设置好绑定之后再去修改列名。
如下图所示,先在模板功能上设置绑定信息,并将infomation表拖入创建好的table中
image.png374693908.png
之后直接修改列名改为中文显示。
image.png363787230.png
修改过后可以看到列名是中文,但是绑定信息仍是之前的模板中的数据。
这样模板已经构建好了,利用设计器导出ssjson的功能导出成ssjson就可以将模板单独保存了。
同理使用时候利用SpreadJS的fromjson进行加载,然后通过setDataSource绑定数据即可。这就是所谓的模板与数据分离。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部