SpreadJS FromJson Chart загрузить
Я использую 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();
0 ответов
Ну, после долгого дня, я думаю, я нашел причину проблемы и начал работать над этим.
Допустим, у нас есть два листа. Индекс Sheet1 равен 0, а индекс Sheet2 равен 1. Из-за опций сериализации json, таких как frozenColumnsAsRowHeaders и frozenRowsAsColumnHeaders, до тех пор, пока Sheet2 не будет окрашен, номера строк и номера столбцов в json будут разными.
Если в Sheet1 есть формула или диаграмма, ссылающаяся на Sheet2, их ссылки будут указывать на ячейку, отличную от той, которую вы установили первой. Так что всегда ссылка на листы, которые будут окрашены ранее, является способом решения этой проблемы.