如何创buildExcel工作表并将其添加到Excel InterOp中的多个工作簿

我一直在遵循以下模式,使用Excel InterOp创build多个工作表和多个工作簿。 现在,我需要创build一个叫做主工作簿的工作簿,它将包含我在原始工作簿中创build的工作表中的一些工作表。 举个例子,比方说WorkBook1有Sheet1和Sheet2,而Workbook2有Sheet3和Sheet4。 我希望主工作簿具有Sheet1和Sheet3。 我正在寻找一种方法来创build我为WorkBook1和WorkBook2创build的工作表(工作表1,工作表2,工作表3,工作表4),而且只需最less量的代码重复将工作表1和工作表3添加到主工作簿。 任何帮助将不胜感激。

For i = 1 To 10 Dim xlApp As Application = New Application Dim xlWorkBook As Workbook xlWorkBook = xlApp.Workbooks.Add Dim xlWorkSheet As Worksheet Dim xlSheets As Sheets = xlWorkBook.Sheets Dim xlNewSheet As Worksheet Dim sheetCount As Integer = 1 ' So I repeat the following block to add multiple sheets with different content to a WorkBook xlNewSheet = xlSheets.Add(xlSheets(sheetCount), Type.Missing, Type.Missing, Type.Missing) sheetCount += 1 xlNewSheet.Name = SomeName xlWorkSheet = xlWorkBook.Sheets(SomeName) AddContentToSheet(xlNewSheet) ' A Sub that adds real content to the sheet . . . . xlWorkBook.SaveAs(...) xlWorkBook.Close() xlApp.Quit() Next i 

所以现在,我的问题是,如果我有我的Master Workbook:

 Dim MasterWorkBook As Workbook MasterWorkBook = xlApp.Workbooks.Add 

在重复10次的循环之前定义,以创build10个不同的工作簿。 如何以最less量的代码重复将选定的表格添加到MasterWorkBook。

  Dim xlApp As Application = New Application Dim masterWb As Workbook masterWb = xlApp.Workbooks.Add For i = 1 To 3 Dim xlWorkBook As Workbook xlWorkBook = xlApp.Workbooks.Add Dim ws As Worksheet 'Dim xlSheets As Sheets = xlWorkBook.Sheets 'Dim xlNewSheet As Worksheet For j = 1 To 2 Try ws = xlWorkBook.Sheets.Add(, xlWorkBook.Sheets(xlWorkBook.Sheets.Count)) ws.Name = i + j AddContentToSheet(ws) If j = 1 Then ws.Copy(, masterWb.Sheets(masterWb.Sheets.Count)) End If Catch ws = Nothing xlWorkBook.Close() xlWorkBook = Nothing xlApp.Quit() xlApp = Nothing Console.WriteLine("error") Exit Sub End Try Next j 'AddContentToSheet(xlNewSheet) ' A Sub that adds real content to the sheet ws = Nothing xlWorkBook.SaveAs("C:\Users\Documents\Visual Studio 2008\Project\" + Str(i) + ".xlsx") xlWorkBook.Close() xlWorkBook = Nothing Next i masterWb.Sheets("Sheet1").Delete() masterWb.Sheets("Sheet2").Delete() masterWb.Sheets("Sheet3").Delete() masterWb.SaveAs("C:\Users\Documents\Visual Studio 2008\Project\master.xlsx") masterWb.Close() masterWb = Nothing xlApp.Quit() xlApp = Nothing End Sub Sub AddContentToSheet(ByVal a As Worksheet) a.Cells(1, 1) = "abc" a.Cells(1, 2) = "abc" End Sub 

该代码创build3个工作簿,并在每个工作簿的末尾添加2个工作表。 并将每个工作簿中第一个添加的工作表复制到主工作簿。 请记住使用后释放对象引用。 希望能帮助到你:)