请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

4人防

注册会员

3

主题

8

帖子

21

积分

注册会员

积分
21
  • 42

    金币

  • 3

    主题

  • 8

    帖子

最新发帖
4人防
注册会员   /  发表于:2025-3-6 14:47  /   查看:49  /  回复:3
18金币
本帖最后由 4人防 于 2025-3-6 14:49 编辑

打开一个xml(会存在很多的公式),
在批量给单元格赋值前,我先设置AutoCalculation = false;
写完之后,我再AutoCalculation = true;


for (var i = 0; i < fp.Sheets.Count; i++)
            {
                fp.Sheets.AutoCalculation = false;
                fp.Sheets.SuspendAutoUpdateChartData();
                fp.Sheets.SuspendFormulaParsing();
                fp.Sheets.AutoFilter = false;
                fp.Sheets.AutoGenerateColumns = false;
                fp.Sheets.AutoSortEnhancedContextMenu = false;
                fp.Sheets.AutoSortFrozenRows = false;
                fp.Sheets.AutoSortTrailingFrozenRows = false;
                fp.Sheets.AutoUpdateNotes = false;
                fp.Sheets.DataAutoCellTypes = false;
                fp.Sheets.DataAutoHeadings = false;
                fp.Sheets.DataAutoSizeColumns = false;
            }

            fp.SuspendLayout();

虽然能提升点速度,但是还是 消耗时间太多,我已经把所有能关闭的,都关闭了,还有其它方法么?

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2025-3-7 12:00:25
沙发
没有其他的优化方法了,不过如果你是给一个连续区域设置值,可以尝试使用SetArray方法传入一个二维数组,看看是否有优化

image.png215716246.png
回复 使用道具 举报
4人防
注册会员   /  发表于:4 天前
板凳
Richard.Ma 发表于 2025-3-7 12:00
没有其他的优化方法了,不过如果你是给一个连续区域设置值,可以尝试使用SetArray方法传入一个二维数组,看 ...

感谢,我试试
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:前天 00:07
地板
好的,不客气
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部