Posiadam skoroszyt programu Excel z wieloma, wieloma arkuszami. Chcę usunąć wszystkie arkusze oprócz trzech z nich.programowo usuwają arkusze Excela
W szczególności chciałabym wiedzieć, czy istnieje sposób na usunięcie arkuszy przy użyciu nazwy arkusza zamiast liczby porządkowej (numer arkusza).
Używam programu excel interop i C# do pracy z programem Excel.
Microsoft.Office.Interop.Excel.Application xlApp = null;
Excel.Workbook xlWorkbook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlNewSheet = null;
to jest złe, wierzę. Czy nie powinieneś raczej iść w dół w pętli, skoro usuwasz z kolekcji arkuszy? 'for (int i = WorkSheets.Count; i> 1; i -)' –
Żaden 'C#' ekspert, ale 'xlApp.DisplayAlerts = false' itp. powinien znajdować się poza pętlą. – brettdj
Komentarz Per @ KenWhite, tak, musisz cofnąć się do tyłu po usunięciu, w przeciwnym razie otrzymasz "i", który jest poza zakresem - jeśli usuniesz nawet * jeden * arkusz, nigdy nie będziesz w stanie dotrzeć '.Worksheets.Count' od tego czasu ten indeks arkusza już nie istnieje w kolekcji' Sheets'. W przeciwnym razie możesz zrobić pętlę 'For each wksheet' i usunąć w oparciu o' .Name 'arkusza. –