我有一张excel工作簿,里面有很多张。我想删除除了其中三张之外的所有纸张。
具体来说,我想知道是否有办法使用工作表名称而不是序数(工作表编号)来删除工作表。
我正在使用excel interop和C#来使用Excel。
Microsoft.Office.Interop.Excel.Application xlApp = null;
Excel.Workbook xlWorkbook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlNewSheet = null;
答案 0 :(得分: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;
答案 1 :(得分:2)
我知道这是旧的,但我只是使用了休息
workBook.Sheets["Sheet1"].Delete();
答案 2 :(得分: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;
在遍历集合时避免删除集合中的项目始终是一个好习惯。