7

我有一个包含许多工作表的 Excel 工作簿。我想删除除了其中三个之外的所有工作表。

具体来说,我想知道是否有办法使用工作表名称而不是序数(工作表编号)来删除工作表。

我正在使用 excel interop 和 C# 来处理 Excel。

Microsoft.Office.Interop.Excel.Application xlApp = null;
Excel.Workbook xlWorkbook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlNewSheet = null;
4

3 回答 3

11
xlApp.DisplayAlerts = false;
for (int i = xlApp.ActiveWorkbook.Worksheets.Count; i > 0 ; i--)
{
    Worksheet wkSheet = (Worksheet)xlApp.ActiveWorkbook.Worksheets[i];
    if (wkSheet.Name == "NameOfSheetToDelete")
    {
        wkSheet.Delete();
    }
}
xlApp.DisplayAlerts = true;
于 2013-05-02T01:34:23.097 回答
2

我知道这是旧的,但我只是使用休耕

workBook.Sheets["Sheet1"].Delete();

于 2015-06-08T19:31:19.280 回答
1

我知道这个线程确实很旧,但对于未来的访问者,如果您知道要删除的工作表的名称,更好的方法是循环访问工作表的名称,如下所示:

Workbook book = excelApp.Workbooks.Open("filePathHere");
string[] sheetsToDelete = {"s1", "s2"};
excelApp.DisplayAlerts = false; 
foreach(string sheetToDelete in sheetsToDelete )
{
    book.Worksheets[sheetToDelete].Delete();
}
excelApp.DisplayAlerts = true;

在遍历集合时避免删除集合中的项目始终是一种好习惯。

于 2021-02-25T00:07:06.987 回答