【问题标题】:How can I clone a workbook in Spire.XLS?如何在 Spire.XLS 中克隆工作簿?
【发布时间】:2018-10-17 13:18:59
【问题描述】:

我有一个想要克隆的Spire.Xls.Workbook 对象。由于该课程不提供Clone 方法,因此我尝试创建一个新工作簿并从现有工作簿中复制所有现有工作表。这是我的代码:

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 对象的克隆?

【问题讨论】:

    标签: c# excel spire.xls


    【解决方案1】:

    用途:

        clone.Worksheets.AddCopy(worksheets);
    

    【讨论】:

      【解决方案2】:

      @DheerajMalik's answer 适用于.xlsx 文件。如果您有.xlsm 文件,那么宏将会丢失。为了解决这个限制,这里有另一种方法:

      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);
      }
      

      【讨论】:

        猜你喜欢
        • 2014-07-13
        • 1970-01-01
        • 1970-01-01
        • 2011-10-13
        • 2018-11-28
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 2021-10-11
        相关资源
        最近更新 更多