如何在 Spire.XLS 中克隆工作簿?
How can I clone a workbook in Spire.XLS?
我有一个 Spire.Xls.Workbook
对象,我想克隆它。由于 class 不提供 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
对象的克隆?
使用:
clone.Worksheets.AddCopy(worksheets);
适用于 .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);
}
我有一个 Spire.Xls.Workbook
对象,我想克隆它。由于 class 不提供 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
对象的克隆?
使用:
clone.Worksheets.AddCopy(worksheets);
.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);
}