首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spire.XLS中克隆工作簿?

如何在Spire.XLS中克隆工作簿?
EN

Stack Overflow用户
提问于 2018-10-17 13:18:59
回答 2查看 551关注 0票数 1

我有一个Spire.Xls.Workbook对象,我想克隆它。由于该类没有提供Clone方法,所以我尝试创建一个新的工作簿,并从现有工作簿复制所有现有工作表。这是我的密码:

代码语言:javascript
复制
public void Clone(Workbook workbook, string fileName)
{
    var clone = new Workbook();

    // copy worksheets to List to be able to use foreach
    var worksheets = workbook.Worksheets
        .Cast<Worksheet>()
        .ToList();

    foreach (Worksheet worksheet in worksheets)
    {
        var clonedSheet = worksheet.Clone(worksheet.Parent);
        clone.Worksheets.Add((IWorksheet)clonedSheet);
    }

    clone.SaveToFile(fileName, ExcelVersion.Version2007);
}

方法完成时没有出现错误,文件将被创建,但它不包含任何克隆的工作表。我是不是做错了什么,还是不可能创建Workbook对象的克隆?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-22 02:28:42

使用:

代码语言:javascript
复制
    clone.Worksheets.AddCopy(worksheets);
票数 0
EN

Stack Overflow用户

发布于 2020-10-19 07:58:34

@DheerajMalik's answer可以很好地处理.xlsx文件。如果您有.xlsm文件,那么宏就会丢失。要解决这一限制,另一种方法是:

代码语言:javascript
复制
using (var stream = new MemoryStream())
{
    // Save the original to a memory stream
    workbook.SaveToStream(stream);

    // Create a new workbook and load the content from the memory stream
    var clone = new Workbook();
    clone.LoadFromStream(stream);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52855897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档