- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
需求介绍 。
很多用户使用了 SpreadJS 的数据填报功能。大致用法为:设计模板,填充数据源。在这个过程中,可能会出现模板中设置了公式,而在数据源填充时,公式没有携带下来的问题.
比如我们定义一个模板:
接下来使用setDataSpurce()填充数据源,填充后,发现只有一行有公式值,其他行无数据 。
那么,我们该做一些什么操作呢?或者有哪些方案呢? 目前有四种方案,分别fillAuto、copyTo、clipboardPaste、setColumnDataFormula 。
我们分别看一下这四种方案的具体使用用法及性能.
我们先获取下table区域,定义baseRow ,baseCol 。
let row = table.range().row
let baseRow = row + 1;
let baseCol = 4
let rowCount = 0
然后在setDataSource后,修改rowCount值 。
document.getElementById('btn6').addEventListener('click', function () {
sheet.setDataSource(new GC.Spread.Sheets.Bindings.CellBindingSource(data2))
rowCount = table.range().rowCount
})
1、方案 。
1、fillAuto 。
let start = new GC.Spread.Sheets.Range(baseRow, baseCol, 1, 1)
let end = new GC.Spread.Sheets.Range(baseRow, baseCol, rowCount - 1, 1)
sheet.fillAuto(start, end, {
fillType: GC.Spread.Sheets.Fill.FillType.auto,
series: 0,
direction: GC.Spread.Sheets.Fill.FillDirection.down
});
2、copyTo 。
for (let r = baseRow + 1; r < row + rowCount; r++) {
sheet.copyTo(baseRow, baseCol, r, baseCol, 1, 1, GC.Spread.Sheets.CopyToOptions.formula)
}
3、clipboardPaste 。
let fromRanges = [new GC.Spread.Sheets.Range(baseRow, baseCol, 1, 1)]
let pastedRanges = [new GC.Spread.Sheets.Range(baseRow + 1, baseCol, rowCount - 2, 1)]
spread.commandManager().execute({
cmd: "clipboardPaste",
sheetName: sheet.name(),
fromSheet: sheet,
fromRanges,
pastedRanges,
isCutting: false,
clipboardText: "",
pasteOption: GC.Spread.Sheets.ClipboardPasteOptions.formulas
});
4、setColumnDataFormula 。
table.setColumnDataFormula(baseCol, sheet.getFormula(baseRow, baseCol));
上述四种方案均能实现公式填充,结果如下:
2、性能对比 。
1、100条 那么,我们接下来看下这四种方案的性能吧,首先我们设置100条数据源, 。
let sales = [], dataLength = 100
for (let i = 0; i < dataLength; i++) {
sales.push({orderDate: '1/6/2013', item: 'book', units: '95', quantity: 1.99})
}
sheet.setRowCount(dataLength + 1)
然后设置一个按钮,在每一种方案执行后,用来清除数据.
document.getElementById('btn5').addEventListener('click', function () {
sheet.clear(2, 4, sheet.getRowCount(), 1,GC.Spread.Sheets.SheetArea.viewport,GC.Spread.Sheets.StorageType.data);
})
结果如下:
100条数据的情况下,四种方案的性能都相差不大.
2、1000条 接下来,我们设置10000条数据,将dataLength 改为1000 结果如下:
3、10000条 接下来,我们设置10000条数据,将dataLength 改为10000 结果如下:
观察上图,我们发现setColumnDataFormula与clipboardPaste性能较好,而fillAuto性能最差.
4、10000条 我们接下来将数据量改为10万条数据,观察setColumnDataFormula与clipboardPaste性能 。
汇总以下这些数据:
总结 。
由上面的内容可以看出,在数据量不大的情况下,四种方式差不多,但在数据量较大的情况下,建议使用setColumnDataFormula方式填充公式.
扩展链接:
【干货放送】财务报表勾稽分析要点,一文读尽! 。
为什么你的财务报表不出色?推荐你了解这四个设计要点和! 。
纯前端类 Excel 表格控件在报表勾稽分析领域的应用场景解析 。
最后此篇关于SpreadJS在数据填充时的公式填充方案的文章就讲到这里了,如果你想了解更多关于SpreadJS在数据填充时的公式填充方案的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试使用 SpreadJs 设置边框,但它对我不起作用。 我已经从他们的帮助文档中删除了该示例,但它不起作用,边框不显示。 http://help.grapecity.com/spread/Sp
我正在使用“spreadJS”,我发现它像 Excel 一样很棒的组件,但担心我无法为单元格分配类似(整数、字符串、组合框、日期)的类型,有什么办法可以做到这一点吗? p> 最佳答案 似乎spread
我打开一个电子表格,我可以在控制台中看到: _clipBoardOptions: "All" 在 activeSheet 对象中。 但每当我尝试从 Excel 粘贴格式时,它只会传递该值。有什么想法我
当我为 SPreadJs 网格创建新列时,我没有看到任何用于对齐列的属性。例如: var nameColInfo = { name: "Name", displayName: "Name", size
我使用的是 SpreadJS 版本 12 我想要的是在每个 keyDown/keyUp 事件后获取单元格文本/值。 当我尝试运行 cell.text() 或 cell.getValue() 时,我得到
我正在尝试使用 Jsdom 加载 SpreadJS,但出现错误:需要一个完全支持 HTML5 Canvas 的浏览器才能运行 SpreadJS。 哪里是 jsom doc 说它支持 Canvas 。
我正在尝试将 spreadjs 库添加到我的 Angular 5 应用程序中。我正在按照此链接中给出的教程进行操作。 https://www.grapecity.com/en/blogs/spread
我认为同时使用 Kendo UI 和 SpreadJS 可能会遇到兼容性问题。如果我在 HTML 页面中包含 JQuery、Kendo 和 SpreadJS 引用,那么 Chrome 会在开发控制台中
我目前有一个使用 AngularJS/SpreadJS 的解决方案,我们需要使用公式更新标题部分。当我们使用 setValue 更改标题中的单元格值时,一切都显示正常,但是我们需要使用 setForm
我是一名优秀的程序员,十分优秀!