使用VB.net取消特定的工作表

我正在使用VB.net删除名称出现在列表框中的工作表列表。

在我的研究中,我find了两种删除项目的方法。

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)我不知道如何分配名称的function,所以只有特定的工作表被删除。

谢谢

如果你使用COM接口来修改你的工作簿,你可以这样做(从这里 ):

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

COM与Excel进行交互的速度相当缓慢,而且你必须处理所有的用户界面,比如DisplayAlerts,禁用/启用确认对话框等等。 您应该考虑使用诸如EEPlus之类的库来创build/编辑没有COM的xlsx和xlsm文件。 (这也意味着您的应用程序可以在没有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