В целом, когда я тестирую код в вопросе, возникают проблемы с типизацией данных.Excel "требователен" к типизации данных - часто необходимо явно приводить тип.Следующее foreach
работает для меня: обратите внимание на (Excel.Worksheet)
приведение.С теми, с кем я не столкнулся, не было проблем с методом (свойством) Copy
(или Name
).
Я также столкнулся с «странностями», присваивая имена листов.Логика, используемая в коде в вопросе, не ясна, поэтому, исходя из предположения, что новые листы должны быть добавлены после трех пустых листов по умолчанию, я изменил ws.Copy
, чтобы поставить их в конце.
foreach (Excel.Worksheet ws in sourceWorkBook.Worksheets)
{
var wSheet = (Excel.Worksheet) destWorkBook.Worksheets[destWorkBook.Worksheets.Count];
ws.Copy(missing, wSheet);
Excel.Worksheet wNewSheet = (Excel.Worksheet)destWorkBook.Worksheets[destWorkBook.Worksheets.Count];
wNewSheet.Name = "New" + ws.Name;
}