我有一个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对象的克隆?
发布于 2018-10-22 02:28:42
使用:
clone.Worksheets.AddCopy(worksheets);发布于 2020-10-19 07:58:34
@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);
}https://stackoverflow.com/questions/52855897
复制相似问题