我正在使用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();发布于 2018-12-20 07:08:22
在漫长的一天之后,我想我已经找到了问题的根源,并开始着手解决这个问题。
假设我们有两张床单。Sheet2 1的索引是0,Sheet2 2的索引是1。由于json的序列化选项,比如frozenColumnsAsRowHeaders和frozenRowsAsColumnHeaders,直到Sheet2被绘制出来,在json中行号和列号是不同的。
如果Sheet1中存在引用Sheet2的公式或图表,则它们的引用将指向与您首先设置的单元格不同的单元格。因此,总是引用之前将要绘制的纸张是解决这个问题的方法。
https://stackoverflow.com/questions/53361379
复制相似问题