Ho una cartella di lavoro Excel con molti, molti fogli. Voglio cancellare tutti i fogli tranne tre di essi.cancella i fogli di lavoro excel a livello di programmazione
In particolare, vorrei sapere se esiste un modo per rimuovere i fogli utilizzando il nome del foglio anziché gli ordinali (numero del foglio).
Sto usando excel interop e C# per lavorare con Excel.
Microsoft.Office.Interop.Excel.Application xlApp = null;
Excel.Workbook xlWorkbook = null;
Excel.Sheets xlSheets = null;
Excel.Worksheet xlNewSheet = null;
Questo è sbagliato, credo. Non dovresti invece andare verso il basso nel tuo ciclo, dato che stai cancellando dall'interno della raccolta di fogli di lavoro? 'for (int i = WorkSheets.Count; i> 1; i -)' –
Nessun esperto 'C#' ma 'xlApp.DisplayAlerts = false' etc dovrebbe risiedere al di fuori del ciclo. – brettdj
Per @ commento di KenWhite, sì, devi andare indietro all'eliminazione, altrimenti ti ritroverai con un 'i' che è fuori limite - se elimini anche solo un foglio di lavoro *, non sarai mai in grado di raggiungere '.Worksheets.Count' da quel momento, quell'indice del foglio non esiste più nella collezione' Sheets'. Altrimenti si potrebbe fare un 'Per ogni ciclo di wksheet' ed eliminare in base al'. Nome del foglio'. –