spread JS 加载大数据时如果有公式时会非常慢,2万条数据要接近1分钟才加载完,这种是决对不允许存在的我用的版本是最新下载的最新版本的spread JS
有什么办法来解决这种情况呢,
可不可以在加载时先不执行计算公式,我直接把计算出来的结果直接赋值赋上去
公式只在我修改Cell中的数据后才执行计算呢?
以下为我的代码,请测试
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="spreadjs/css/gcspread.sheets.9.40.20161.0.css" rel="stylesheet" type="text/css" />
<script src="spreadjs/gcspread.sheets.all.9.40.20161.0.min.js" type="text/javascript"></script>
</head>
<body>
<script>
window.onload = function () {
var spread = new GcSpread.Sheets.Spread(document.getElementById('ss'), { sheetCount: 1 });
var sheet = spread.getSheet(0);
sheet.isPaintSuspended(true);
sheet.setColumnCount(100);
sheet.setRowCount(100000);
sheet.addSpan(0, 1, 1, 36);
sheet.setValue(0, 1, "2017销售预算编报");
sheet.getCells(0, 1, 2, 36).foreColor("red");
sheet.getCell(0, 1).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(1, 1, "1月");
sheet.setValue(1, 2, "1月");
sheet.setValue(1, 3, "1月");
sheet.addSpan(1, 1, 1, 3);
sheet.getCell(1, 1).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 1, "单价");
sheet.setValue(2, 2, "数量");
sheet.setValue(2, 3, "金额");
sheet.setValue(1, 4, "2月");
sheet.setValue(1, 5, "2月");
sheet.setValue(1, 6, "2月");
sheet.addSpan(1, 4, 1, 3);
sheet.getCell(1, 4).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 4, "单价");
sheet.setValue(2, 5, "数量");
sheet.setValue(2, 6, "金额");
sheet.setValue(1, 7, "3月");
sheet.setValue(1, 8, "3月");
sheet.setValue(1, 9, "3月");
sheet.addSpan(1, 7, 1, 3);
sheet.getCell(1, 7).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 7, "单价");
sheet.setValue(2, 8, "数量");
sheet.setValue(2, 9, "金额");
sheet.setValue(1, 10, "4月");
sheet.setValue(1, 11, "4月");
sheet.setValue(1, 12, "4月");
sheet.addSpan(1, 10, 1, 3);
sheet.getCell(1, 10).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 10, "单价");
sheet.setValue(2, 11, "数量");
sheet.setValue(2, 12, "金额");
sheet.setValue(1, 13, "5月");
sheet.setValue(1, 14, "5月");
sheet.setValue(1, 15, "5月");
sheet.addSpan(1, 13, 1, 3);
sheet.getCell(1, 13).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 13, "单价");
sheet.setValue(2, 14, "数量");
sheet.setValue(2, 15, "金额");
sheet.setValue(1, 16, "6月");
sheet.setValue(1, 17, "6月");
sheet.setValue(1, 18, "6月");
sheet.addSpan(1, 16, 1, 3);
sheet.getCell(1, 16).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 16, "单价");
sheet.setValue(2, 17, "数量");
sheet.setValue(2, 18, "金额");
sheet.setValue(1, 19, "7月");
sheet.setValue(1, 20, "7月");
sheet.setValue(1, 21, "7月");
sheet.addSpan(1, 19, 1, 3);
sheet.getCell(1, 19).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 19, "单价");
sheet.setValue(2, 20, "数量");
sheet.setValue(2, 21, "金额");
sheet.setValue(1, 22, "8月");
sheet.setValue(1, 23, "8月");
sheet.setValue(1, 24, "8月");
sheet.addSpan(1, 22, 1, 3);
sheet.getCell(1, 22).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 22, "单价");
sheet.setValue(2, 23, "数量");
sheet.setValue(2, 24, "金额");
sheet.setValue(1, 25, "9月");
sheet.setValue(1, 26, "9月");
sheet.setValue(1, 27, "9月");
sheet.addSpan(1, 25, 1, 3);
sheet.getCell(1, 25).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 25, "单价");
sheet.setValue(2, 26, "数量");
sheet.setValue(2, 27, "金额");
sheet.setValue(1, 28, "10月");
sheet.setValue(1, 29, "10月");
sheet.setValue(1, 30, "10月");
sheet.addSpan(1, 28, 1, 3);
sheet.getCell(1, 28).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 28, "单价");
sheet.setValue(2, 29, "数量");
sheet.setValue(2, 30, "金额");
sheet.setValue(1, 31, "11月");
sheet.setValue(1, 32, "11月");
sheet.setValue(1, 33, "11月");
sheet.addSpan(1, 31, 1, 3);
sheet.getCell(1, 31).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 31, "单价");
sheet.setValue(2, 32, "数量");
sheet.setValue(2, 33, "金额");
sheet.setValue(1, 34, "12月");
sheet.setValue(1, 35, "12月");
sheet.setValue(1, 36, "12月");
sheet.addSpan(1, 34, 1, 3);
sheet.getCell(1, 34).hAlign(GcSpread.Sheets.HorizontalAlign.center);
sheet.setValue(2, 34, "单价");
sheet.setValue(2, 35, "数量");
sheet.setValue(2, 36, "金额");
for (var i = 3; i < 20000; i++) {
//1月
sheet.setValue(i, 1, i);
sheet.setValue(i, 2, i * 2);
sheet.setFormula(i, 3, "=B" + (i + 1) + "*C" + (i + 1));
//2月
sheet.setValue(i, 4, i);
sheet.setValue(i, 5, i * 2);
sheet.setFormula(i, 6, "=E" + (i + 1) + "*F" + (i + 1));
//3月
sheet.setValue(i, 7, i);
sheet.setValue(i, 8, i * 2);
sheet.setFormula(i, 9, "=H" + (i + 1) + "*I" + (i + 1));
//4月
sheet.setValue(i, 10, i);
sheet.setValue(i, 11, i * 2);
sheet.setFormula(i, 12, "=K" + (i + 1) + "*L" + (i + 1));
//5月
sheet.setValue(i, 13, i);
sheet.setValue(i, 14, i * 2);
sheet.setFormula(i, 15, "=N" + (i + 1) + "*O" + (i + 1));
//6月
sheet.setValue(i, 16, i);
sheet.setValue(i, 17, i * 2);
sheet.setFormula(i, 18, "=Q" + (i + 1) + "*R" + (i + 1));
//7月
sheet.setValue(i, 19, i);
sheet.setValue(i, 20, i * 2);
sheet.setFormula(i, 21, "=T" + (i + 1) + "*U" + (i + 1));
//8月
sheet.setValue(i, 22, i);
sheet.setValue(i, 23, i * 2);
sheet.setFormula(i, 24, "=W" + (i + 1) + "*X" + (i + 1));
//9月
sheet.setValue(i, 25, i);
sheet.setValue(i, 26, i * 2);
sheet.setFormula(i, 27, "=Z" + (i + 1) + "*AA" + (i + 1));
//10月
sheet.setValue(i, 28, i);
sheet.setValue(i, 29, i * 2);
sheet.setFormula(i, 30, "=AC" + (i + 1) + "*AD" + (i + 1));
//11月
sheet.setValue(i, 31, i);
sheet.setValue(i, 32, i * 2);
sheet.setFormula(i, 33, "=AF" + (i + 1) + "*AG" + (i + 1));
//12月
sheet.setValue(i, 34, i);
sheet.setValue(i, 35, i * 2);
sheet.setFormula(i, 36, "=AI" + (i + 1) + "*AJ" + (i + 1));
}
sheet.isPaintSuspended(false);
};
</script>
<form id="form1" runat="server">
<div>
<div id='ss' style='width: 100%; height: 400px;'>
</div>
</div>
</form>
</body>
</html>
|
|