本帖最后由 爱迪生 于 2023-1-13 11:07 编辑
我们在SpreadJS中,很多客户保留了在Excel中的操作习惯,比如想全选后复制粘贴整个表单,但是当数据量比较大的情况下,
容易出现浏览器崩溃的情况,基于这样的情景,有如下三个方法我们不妨试一试:
1.如果只是SpreadJS内部的复制,可以将allowCopyPasteExcelStyle设置为false,可以很大的提高复制性能
- spread.options.allowCopyPasteExcelStyle = false;
复制代码 2.设置GC.Spread.Sheets.CopyPasteHeaderOptions为noHeaders
- spread.options.copyPasteHeaderOptions = GC.Spread.Sheets.CopyPasteHeaderOptions.noHeaders;
复制代码 3.如果我们的客户希望让最终用户避免性能问题,则有一种变通方法,当最终用户复制过多单元格(例如,10000个)时,可以重写复制命令,并且不执行复制操作,或者提示用户数据量过大复制会耗时较长:
- var oldExecute = GC.Spread.Sheets.Commands.copy.execute;
- GC.Spread.Sheets.Commands.copy.execute = function (context, options) {
- var sheet = context.getSheetFromName(options.sheetName);
- var selections = sheet.getSelections();
- var count = 0;
- for (let range of selections) {
- var rowCount = range.rowCount;
- if (range.row === -1) {
- rowCount = sheet.getRowCount();
- }
- var colCount = range.colCount;
- if (range.col === -1) {
- colCount = sheet.getColumnCount();
- }
- count += rowCount * colCount;
- }
- if (count > 10000) {
- throw new Error("Copy too many cells maybe very slow.")
- }
- return oldExecute(context, options);
- };
复制代码
|
|