找回密码
 立即注册

QQ登录

只需一步,快速开始

Lin丶

注册会员

1

主题

2

帖子

15

积分

注册会员

积分
15
  • 37

    金币

  • 1

    主题

  • 2

    帖子

最新发帖
Lin丶
注册会员   /  发表于:2024-7-15 11:17  /   查看:843  /  回复:6
本帖最后由 Lin丶 于 2024-7-15 11:27 编辑

使用SpreadJs17.0.9的时候,直接将模板保存xlsx文件保存,然后导入的时候加载xlsx文件,是不是字段绑定工作表绑定是不是加载不了。
1.保存模板为xlsx文件

// 保存模板
const saveTemp = async () => {
        let designer = toRaw(designerRef.value);
        let spread = designer.getWorkbook(); // getWorkbook() 获取工作簿的值
        //let fileName = `${props.id}.${saveFileType}`;
        let fileName = `测试.xlsx`;
        var json = spread.toJSON({ includeBindingSource: true });
        console.log(" ~ saveTemp ~ json:", json)
        var excelIo = new ExcelIO.IO();
        excelIo.save(
                json,
                function (blob: any) {
                        saveAs(blob, fileName);
                },
                function (e: any) {
                        ElMessage.error('保存模板失败!' + e);
                }
        );
2.然后再次加载模板

var excelIo = new ExcelIO.IO();
        var jsonOptions = {
                doNotRecalculateAfterLoad: true,
                incrementalLoading: true,
        };
        excelIo.open(
                excelFile,
                function (json: any) {
                        // spread.suspendCalcService(false)
                        // console.log(JSON.stringify(spread.toJSON()))
                        // console.log(spread.getSheet(0).toJSON());
                        console.time('test:');
                        var workbookObj = json;
                        console.log("🚀 ~ loadTemp2 ~ workbookObj:", workbookObj)

                        spread.fromJSON(workbookObj, jsonOptions);
                        // spread.fromJSON(workbookObj);
                        // spread.options.calcOnDemand = true;

                        console.timeEnd('test:');
                        // spread.resumeCalcService(true)
                },
                function (e: any) {
                        ElMessage.error('加载模板失败!' + e);
                },
                {}
        );

数据源和字段绑定会缺失
image.png477597350.png


是不能将模板保存为xlsx类型,是要保存为json类型吗







6 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-15 14:23:06
沙发
您好,SpreadJS在导出为Excel文件的时候是不会将字段绑定信息也保存在文件中的,Excel文件中没有区域能够存储这部分数据,仅有SJS或SSJSON能够将这部分信息保存。
回复 使用道具 举报
Lin丶
注册会员   /  发表于:2024-7-15 14:56:20
板凳
Joestar.Xu 发表于 2024-7-15 14:23
您好,SpreadJS在导出为Excel文件的时候是不会将字段绑定信息也保存在文件中的,Excel文件中没有区域能够存 ...

将模板文件保存为SJS或者SSJSON文件,然后重新打开的时候,
是需要在保存模板的时候手动保存字段数据
var binding=designer.getData("treeNodeFromJson") || designer.getData("oldTreeNodeFromJson")|| designer.getData("updatedTreeNode")
,然后加载模板的时候通过
designer.setData('treeNodeFromJson', binding);
才能加载出来嘛,保存为SJS文件时这块逻辑不会自动处理好嘛
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-7-15 17:42:15
地板
您好,我在17.1.0中测试了一下,SJS导出后导入是会保留字段列表的。

在使用设计器导出SSJSON时,再导入后字段列表也会保留。

在使用toJSON和fromJSON接口的时候,字段数据不会保存,需要如您所述手动处理一下。
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-7-24 12:19:25
5#
Lin丶 发表于 2024-7-15 14:56
将模板文件保存为SJS或者SSJSON文件,然后重新打开的时候,
是需要在保存模板的时候手动保存字段数据
v ...

您好,在17版本,自动处理了这部分的内容,关于您提到的方案是在旧版本的一个解决方案。

如果您当前已经是17版本了,可以忽略这个treeNodeFromJson方案
回复 使用道具 举报
ypge
注册会员   /  发表于:2024-8-22 10:13:45
6#
Ellia.Duan 发表于 2024-7-24 12:19
您好,在17版本,自动处理了这部分的内容,关于您提到的方案是在旧版本的一个解决方案。

如果您当前已 ...

字段列表会自动显示了吗?我17.1.4版本不行呢(要设置treeNodeFromJson才有显示),字段列表是跟着设计器走的吧?
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-8-22 12:17:48
7#
您好,如下动图所示:
设计数据源后,设计模板,保存为sjs文件,在另一个页面中进行导入,数据源还存在:
数据源.gif
数据源2.gif
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部