0

我正在使用 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();
4

1 回答 1

1

经过漫长的一天,我想我已经找到了导致问题的原因并开始解决这个问题。

假设我们有两张纸。Sheet1 的索引是 0,Sheet2 的索引是 1。由于像 frozenColumnsAsRowHeaders 和 frozenRowsAsColumnHeaders 这样的 json 序列化选项,直到 Sheet2 被绘制的行号和列号在 json 中是不同的。

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

于 2018-12-20T07:08:22.890 回答