Demo - FlexGrid
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.input.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.filter.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.sheet.min.js"></script>
<div id="sheet">
</div><br>
<button id="eval" class="btn btn-primary" style="margin: 20px 0">Evaluate</button>
<br>
<p id="value">
</p>
CSS
body {
margin: 40px;
}
.wj-flexsheet {
width: 700px;
height: 400px;
}
JavaScript
onload = function() {
var formatSheet = new wijmo.grid.sheet.FlexSheet('#sheet');
var sheet = new wijmo.grid.sheet.Sheet(formatSheet, null, 'Number', 20, 8);
formatSheet.sheets.push(sheet);
formatSheet.deferUpdate(() => {
var sheetIdx,
sheetName,
colIdx,
rowIdx,
date;
for (sheetIdx = 0; sheetIdx < formatSheet.sheets.length; sheetIdx++) {
formatSheet.selectedSheetIndex = sheetIdx;
sheetName = formatSheet.selectedSheet.name;
for (colIdx = 0; colIdx < formatSheet.columns.length; colIdx++) {
for (rowIdx = 0; rowIdx < formatSheet.rows.length; rowIdx++) {
if (sheetName === 'Number') {
formatSheet.setCellData(rowIdx, colIdx, colIdx + rowIdx);
} else {
date = new Date(2015, colIdx, rowIdx + 1);
formatSheet.setCellData(rowIdx, colIdx, date);
}
}
}
}
formatSheet.selectedSheetIndex = 0;
});
document.getElementById('eval').addEventListener('click', e => {
var val = formatSheet.evaluate('=sum(a1:e5)');
document.getElementById('value').innerHTML = val;
});
}