我正在尝试使用interop Excel类(对于excel 2003)从.Net c#3.5应用程序中删除excel文档中的工作表.
我尝试过很多东西:
Worksheet worksheet = (Worksheet)workbook.Worksheets[1]; worksheet.Delete();
它不起作用,不会抛出任何错误......
经过一个多小时的观察,我找到了答案:
xlApp.DisplayAlerts = false; worksheet.Delete(); xlApp.DisplayAlerts = true;
处理删除Excel工作表时,有两件重要的事情要知道:
Excel互操作从1开始计数(而不是从零开始),因此,删除第二项将导致第三项取代它!所以,删除工作表的正确方法是从最后到第一个:
// Remove LAST worksheet MyWorkBook.Worksheets[3].Delete(); // and only then remove the second (which is the last one) MyWorkBook.Worksheets[2].Delete();
或者,你可以删除列表中的第二项([2])两次,这将给你相同的结果.
下面一行会抛出异常,当你只得到了一个工作表左:
MyWorkBook.Worksheets[1].Delete();
还需要注意的是,工作簿必须包含至少一个工作表; 这意味着您无法删除工作簿中的所有工作表.