You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Syncfusion.XlsIO v15.4460.0.20复制Excel工作表时触发Stack Overflow异常

解决Syncfusion.XlsIO复制工作表时的Stack Overflow异常问题

嘿,我来帮你梳理下这个问题——你用的是Syncfusion.XlsIO.Base 15.4460.0.20版本,复制Excel工作表到新工作簿时触发了Stack Overflow异常,咱们一步步来排查解决:

可能的原因&解决方案

1. 旧版本的已知bug

这个版本算是比较老的了,工作表复制逻辑里可能存在递归调用的漏洞,遇到复杂内容就容易栈溢出。建议先做这两步:

  • 检查原工作簿的工作表有没有复杂内容:比如大量跨表公式、循环引用,或者一堆控件/形状/数组公式,这些都可能在复制时触发递归栈溢出。
  • 优先考虑升级Syncfusion.XlsIO到近期的稳定版本,新版本通常会修复这类底层的栈溢出问题。

2. 代码优化小调整

你的代码可以做些小改动,避免潜在的重复设置或引用问题:

using (ExcelEngine excelEngine = new ExcelEngine())
{
    // 先设置应用默认版本,再处理工作簿
    IApplication application = excelEngine.Excel;
    application.DefaultVersion = ExcelVersion.Excel2013;

    // 打开原工作簿
    IWorkbook workbookMonthly = application.Workbooks.Open(monthlyReport);
    
    // 创建新工作簿时,默认会继承应用的版本,不用重复设置
    IWorkbook reportWorkbook = application.Workbooks.Create();

    // 循环复制前两个工作表(把i<=1改成i<2更直观)
    for (int i = 0; i < 2; i++) 
    {
        // 先尝试只复制数据和格式,排查是否是某些特殊元素导致的问题
        reportWorkbook.Worksheets.AddCopy(workbookMonthly.Worksheets[i], ExcelWorksheetCopyFlags.CopyData | ExcelWorksheetCopyFlags.CopyFormats);
        // 如果这个方式正常,再逐步添加CopyAll里的其他选项,定位具体是哪个元素引发的溢出
    }

    // 别忘了保存新工作簿哦
    reportWorkbook.SaveAs("你的输出路径.xlsx");
}

3. 逐个排查工作表

如果上面的方法还没解决,那就逐个测试工作表:

  • 先只复制索引0的工作表,看是否正常;再单独复制索引1的,确定是哪个工作表出的问题。
  • 找到问题工作表后,删除里面的控件、复杂公式或者形状,再尝试复制,就能定位到具体触发溢出的内容了。

内容的提问来源于stack exchange,提问作者user145610

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:52