找回密码
 立即注册

QQ登录

只需一步,快速开始

田十八

注册会员

4

主题

10

帖子

42

积分

注册会员

积分
42
最新发帖
田十八
注册会员   /  发表于:2023-11-13 10:00  /   查看:1055  /  回复:3
本帖最后由 Richard.Huang 于 2023-11-29 17:17 编辑

产品:GcExcel
版本:V4.2.6

代码示例
wk.DeferUpdateDirtyState = true;
foreach (ValueChangeDTO cellValues in paramsDTO.cellValuesList)
{
        IWorksheet ws = wk.Worksheets[cellValues.SheetName];
        if (ws == null)
        {
                continue;
        }
        foreach (CellValueDTO cell in cellValues.CellValues)
        {
                string cellRangeStr = CellInfo.CellIndexToName(cell.RowIndex, cell.ColumnIndex);

                // 如果公式没有值则赋Value值
                if (string.IsNullOrEmpty(cell.Formula))
                {
                        ws.Cells[cell.ColumnIndex][cell.RowIndex].Value = cell.Value;
                }
                else
                {
                        // 如果公式有值则赋值公式
                        ws.Cells[cell.ColumnIndex][cell.RowIndex].Formula = cell.Formula;
                }
        }
}

wk.DeferUpdateDirtyState = false;  //关闭此选项需要5秒



现在想咨询,有哪些优化思路提升保存性能!

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-11-13 12:12:30
沙发
你目前使用DeferUpdateDirtyState 是想要用来解决什么问题呢?
从你的代码来看,是需要设置公式,可以尝试通过设置EnableCalculation为false,再循环操作,设置完成后再设置为true,不需要设置DeferUpdateDirtyState。

当然现在不确定你这块的时间是消耗在了哪里,如果就是消耗在公式计算上,那么可能并没有什么效果。因为你不管是使用哪一种,实际上都是在最后这句代码设置了以后,会重新计算一遍。这个时间消耗是没法避免的。
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2023-11-29 17:16:47
板凳
您好,请问您的问题是否得到解决,如果仍存在相关疑问,欢迎继续跟帖询问
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-12-28 09:49:03
地板
您好,由于本帖较长时间没有回复,本帖先做结贴处理了,后续如您有其他问题,欢迎您开新帖提问。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部