SpreadJS FromJson图表加载

时间:2018-11-18 13:27:24

标签: spreadjs

我正在使用SpreadJS v12作为报告工具。用户将进入页面以获取所需数据,创建图表并保存以供以后使用。 当用户保存报告时,我获取Json数据(GC.Spread.Sheets.Workbook.toJSon)并将此Json保存到数据库中,并且每当有人尝试访问同一报告时,我都会从数据库中获取Json并将其提供给页面(GC .Spread.Sheets.Workbook.fromJSon)。一切正常,除非页面上有一个图表,否则图表系列(xValues和yValues)的数据源发生了变化。当我检查Json格式时,它看起来像这样:Sheet2!$ B $ 2:$ B $ 25但在图表中是:Sheet2!$ A $ 1:$ A $ 24。我在做错什么吗?

顺便说一下我的序列化选项:{ignoreFormula:false,ignoreStyle:false,rowHeadersAsFrozenColumns:true,columnHeadersAsFrozenRows:true,doNotRecalculateAfterLoad:false}

this.state.spread = new GC.Spread.Sheets.Workbook(document.getElementById("spreadSheetContent"), { sheetCount: 1 });

这是我的保存方法:

var pageJson = this.state.spread.toJSON(this.serializationOption);
let self = this;
        let model = {
            Id: "",
            Name: reportName,
            Query: query,
            PageJson: JSON.stringify(pageJson)
        }

        this.post( { model }, "Query/SaveReportTemplate")
            .done(function(reply){
                self.createSpreadSheet(reply);
           }).fail(function(reply){
                self.PopUp(reply, 4 );
        });

这是我的加载方法:

var jsonOptions = {
            ignoreFormula: false,
            ignoreStyle: false,
            frozenColumnsAsRowHeaders: true, 
            frozenRowsAsColumnHeaders: true,                                     
            doNotRecalculateAfterLoad: false 
        }

        this.state.spread.fromJSON(JSON.parse(template.PageJson),jsonOptions);

        this.state.spread.repaint();

1 个答案:

答案 0 :(得分:1)

好一整天之后,我想我已经找到了造成问题的原因,并开始解决这个问题。

假设我们有两张纸。 Sheet1的索引为0,Sheet2的索引为1。 由于存在json序列化选项,例如FrozenColumnsAsRowHeaders和FrozenRowsAsColumnHeaders,直到绘制Sheet2时,json中的行号和列号都不同。

如果Sheet1中存在引用Sheet2的公式或图表,则其引用将指向与您最初设置不同的单元格。因此,始终参考之前要绘制的图纸是解决此问题的方法。