本帖最后由 Ellia.Duan 于 2025-4-14 11:41 编辑
1、做了以下测试,删除所有的数据透视表后保存sjs ,导入后仍然崩溃
2、然后尝试将没有超过百万行的sheet 删除,仅保留行数超过百万行的sheet ,保存为sjs ,导入后还是有点慢。
3、此时进行下一步分析,通过getUsedRange获取每一个sheet中'all', 'data', 'formula', 'style'的有效数据区域,如下图所示
通过上图,我们发现,style占据了大部分的行数,但是实际的data区域数量很少。
4、重新导入原始的sjs文件,我们执行下面的代码
- ['all', 'data', 'formula', 'style'].forEach(rangeType => {
- console.log(sheet.name(),rangeType, sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType[rangeType]))
-
- })
- sheet.setRowCount(sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType.data).rowCount)
复制代码 执行结束后,保存一个sjs ,再次导入,发现基本上不会有崩溃的问题,且单元格点击反应很快。
附件中我会把测试中的sjs全部发出来
以及,我们可以通过下面的代码 对sheet的有效数据区域进行分析:
- ['all','axis', 'chart', 'colStyle', 'comment', 'conditionFormat','data', 'dataValidation', 'filter', 'formula', 'picture', 'pivottable', 'rowStyle', 'shape', 'slicer', 'span', 'sparkLine', 'style', 'table'].forEach(rangeType=>{
- console.log(rangeType,sheet.getUsedRange(GC.Spread.Sheets.UsedRangeType[rangeType]))
- })
复制代码
由于浏览器的性能问题,建议针对大文件做一些处理,如删除无意义的数据行,删除无意义的样式行。
|
|