工作表未被删除 - 添加新工作表会导致名称冲突错误

时间:2014-04-22 07:03:32

标签: c# excel office-interop worksheet

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

上面的代码用于使用新工作表覆盖现有工作表。我尝试逐行调试,所有代码都运行良好,但在添加另一个具有相同名称的工作表(Noted Framework 2.0)之前,工作表永远不会被删除。

发生异常消息

  

错误:不能将表格重新命名为另一张相同的名称

我认为这是因为之前的工作表没有被正确删除。

1 个答案:

答案 0 :(得分:0)

您当前的解决方案对我来说似乎效率低下......听起来您正在尝试做的就是清除您的表单....

尝试删除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();

如果您使用此方法删除工作表,则无需迭代集合。如果添加或删除了某些工作表,您的馆藏索引可能会发生变化,因此您怀疑的第6张可能不再存在等等......

正确的方法是(不确定为什么它在您的代码中被注释

sheet.Delete();