SpreadJS FromJson 图表加载
SpreadJS FromJson Chart load
我正在使用 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();
经过漫长的一天,我想我已经找到了导致问题的原因并开始解决这个问题。
假设我们有两张纸。 Sheet1 的索引为 0,Sheet2 的索引为 1。
由于 json 序列化选项,如 frozenColumnsAsRowHeaders 和 frozenRowsAsColumnHeaders,直到 Sheet2 被绘制,行号和列号在 json 中是不同的。
如果 Sheet1 中有引用 Sheet2 的公式或图表,它们的引用将指向与您首先设置的单元格不同的单元格。所以一直引用之前要画的sheets才是解决这个问题的方法
我正在使用 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();
经过漫长的一天,我想我已经找到了导致问题的原因并开始解决这个问题。
假设我们有两张纸。 Sheet1 的索引为 0,Sheet2 的索引为 1。 由于 json 序列化选项,如 frozenColumnsAsRowHeaders 和 frozenRowsAsColumnHeaders,直到 Sheet2 被绘制,行号和列号在 json 中是不同的。
如果 Sheet1 中有引用 Sheet2 的公式或图表,它们的引用将指向与您首先设置的单元格不同的单元格。所以一直引用之前要画的sheets才是解决这个问题的方法