Posted 12 September 2017, 2:00 am EST
Hi, I tried to put in a support ticket for this, but it didn’t seem to work. I’ve found a rather big bug I believe. When adding a row and assigning formulas to that row in a loop, the formulas get disconnected with what cell they were assigned to, at least that’s what seems to be happening.
for (let i = 0; i < 75; ++i) {
const rowNumber = ~(i - 76);
sheet.addRows(0, 1);
sheet.getCell(0, 0).value(randNumber());
sheet.getCell(0, 1).value(randNumber());
sheet.getCell(0, 2).formula(`INDIRECT("A"&ROW())-INDIRECT("B"&ROW())`);
sheet.getCell(0, 2).formula(`A${rowNumber}-B${rowNumber}`);
sheet.getCell(0, 3).formula(`INDIRECT("A"&ROW())-INDIRECT("B"&ROW())`);
sheet.getCell(0, 4).formula('ROW()');
}
Below is a full example (your file attachment told me “this file type is not able to be uploaded”). This bug happens whether I suspend event, paint and calc service or don’t.
<html>
<head>
<script src="gc.spread.sheets.all.10.2.0.min.js"></script>
</head>
<body>
<div id="ss"></div>
<script>
var randNumber = function () { return Math.floor(Math.random() * 100); };
var div = document.getElementById('ss');
var spread = new GC.Spread.Sheets.Workbook(div, { sheetCount: 1 });
spread.suspendPaint();
spread.suspendCalcService();
spread.suspendEvent();
const sheet = spread.getSheet(0);
for (let i = 0; i < 75; ++i) {
const rowNumber = ~(i - 76);
sheet.addRows(0, 1);
sheet.getCell(0, 0).value(randNumber());
sheet.getCell(0, 1).value(randNumber());
sheet.getCell(0, 2).formula(`A${rowNumber}-B${rowNumber}`);
sheet.getCell(0, 3).formula(`INDIRECT("A"&ROW())-INDIRECT("B"&ROW())`);
sheet.getCell(0, 4).formula('ROW()');
sheet.getCell(0, 5).value(rowNumber);
}
spread.resumeEvent();
spread.resumeCalcService(true);
spread.resumePaint();
</script>
</body>
</html>