2016-04-06 4 views
0

Я использую VB.net для удаления списка листов, имена которых отображаются в списке.Отбор конкретных рабочих таблиц с помощью VB.net

Во время моего исследования я нашел два способа удаления предметов.

1) CType (objWorkBook.Sheets ("SheetName"), Excel.Worksheet) .Delete()

2) objWorkSheets.Delete()

Цикл, который я буду использовать как показано ниже:

For i As Integer = 0 To workbook_worksheets.Items.Count - 1 

Next 

Если я использую 1), что удаление не делает ничего, и 2) я не знаю, как присвоить имена функции так что только конкретные рабочие листы будут удалены.

Спасибо

ответ

1

Если вы используете COM интерфейсы для Excel, чтобы изменить вашу книгу вы можете сделать что-то вроде этого (от here):

Application.DisplayAlerts=False 
For Each ws in Sheets 
    If ws.Name = "Master" Then ws.delete 
Next 
Application.DisplayAlerts=True 

COM является довольно медленным для взаимодействия с Excel, хотя , и вам нужно иметь дело со всеми фидбированными битами UI, такими как DisplayAlerts, чтобы отключить/включить диалоговые окна подтверждения и т. п. Вы должны использовать библиотеку, такую ​​как EEPlus, для создания/редактирования xlsx и xlsm файлов без COM. (Это также означает, что ваше приложение может работать на машине без Excel или с разными версиями Excel и т.д.)

Использование EEPlus это будет выглядеть примерно так:

Dim workbookFileInfo = New FileInfo("Workbook.xlsx") 
Using excelPackage = New ExcelPackage(workbookFileInfo) 
    Dim worksheet = excelPackage.Workbook.Worksheets.SingleOrDefault(Function(x) x.Name = "Worksheet1") 
    excelPackage.Workbook.Worksheets.Delete(worksheet) 
    excelPackage.Save() 
End Using 
+0

Большое спасибо, что работал отлично. –

+0

Несомненно. Рад помочь. – nickvans

Смежные вопросы