工作表没有被删除 – 添加一个新的会导致名称冲突错误

foreach (Excel.Worksheet sheet in m_objExcel.Sheets) { if (sheet.Name == "Before & After Lube Weight") { //sheet.Delete(); (Excel.Worksheet)m_objExcel.Sheets[6]).Delete(); m_objSheet = (Excel.Worksheet)m_objSheets.Add(m_objSheets[6], Type.Missing, Type.Missing, Type.Missing); m_objSheet.Name = "Before & After Lube Weight"; } } 

上面的代码用于用新的工作表覆盖现有的工作表。 我试图一行一行的debugging,所有的代码工作正常,但工作表永远不会被删除之前添加具有相同名称的另一个工作表(注意框架2.0)。

发生exception消息

错误:无法将名称重命名为另一张纸

我相信这是因为以前的工作表没有正确删除。

你目前的解决scheme似乎对我来说效率不高…听起来你所要做的就是清理你的工作表….

尝试删除Cells

 foreach (Excel.Worksheet sheet in m_objExcel.Sheets) { if (sheet.Name == "Before & After Lube Weight") { sheet.Cells.Delete(); } } 

如果仍然,你想删除你的表,然后记住这是一个坏的方法…

 (Excel.Worksheet)m_objExcel.Sheets[6]).Delete(); 

如果使用此方法删除工作表,则不需要迭代集合。 如果一些表已被添加或删除您的collections索引可能会改变,所以你怀疑第六表可能不再在那里等…

正确的方法是( 不知道为什么它在你的代码中被评论

 sheet.Delete();