将Excel.WorkSheet获取到相同的Excel.Workbook中

所以,经过大量的研究和使用下面的代码在一个类中,我传递的项目(一个DataTable)在Excel中打开。 我有大约5张纸,需要在同一本书中打开。 下面的代码是第一个2.问题是他们都开放在新的工作书 – 我需要他们都打开在同一个工作簿。 尽pipe他们在每个新的工作簿中都在正确的表格上打开。 我认为一个简单的“如果”的声明会起作用,然而,它不是 – 任何关于如何将它们整合到一个工作簿的input将不胜感激,并提前感谢!

Microsoft.Office.Interop.Excel.Application oExcel = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbooks oBooks; Microsoft.Office.Interop.Excel.Sheets oSheets; Microsoft.Office.Interop.Excel.Workbook oBook; Microsoft.Office.Interop.Excel.Worksheet oSheet; oExcel.Visible = true; oExcel.DisplayAlerts = false; oExcel.Application.SheetsInNewWorkbook = 5; oBooks = oExcel.Workbooks; oBook = (Microsoft.Office.Interop.Excel.Workbook)(oExcel.Workbooks.Add(Type.Missing)); oSheets = oBook.Worksheets; if (sheetName == "Combined") { oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oSheets.get_Item(1); oSheet.Name = sheetName; object[,] arr = new object[dt.Rows.Count, dt.Columns.Count]; for (int r = 0; r < dt.Rows.Count; r++) { DataRow dr = dt.Rows[r]; for (int c = 0; c < dt.Columns.Count; c++) { arr[r, c] = dr[c]; } } Microsoft.Office.Interop.Excel.Range c1 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[1, 1]; Microsoft.Office.Interop.Excel.Range c2 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[1 + dt.Rows.Count - 1, dt.Columns.Count]; Microsoft.Office.Interop.Excel.Range range = oSheet.get_Range(c1, c2); range.Value2 = arr; } else if (sheetName == "Auto") { oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oSheets.get_Item(2); oSheet.Name = sheetName; object[,] arr = new object[dt.Rows.Count, dt.Columns.Count]; for (int r = 0; r < dt.Rows.Count; r++) { DataRow dr = dt.Rows[r]; for (int c = 0; c < dt.Columns.Count; c++) { arr[r, c] = dr[c]; } } Microsoft.Office.Interop.Excel.Range c1 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[1, 1]; Microsoft.Office.Interop.Excel.Range c2 = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[1 + dt.Rows.Count - 1, dt.Columns.Count]; Microsoft.Office.Interop.Excel.Range range = oSheet.get_Range(c1, c2); range.Value2 = arr; } 

那么你的代码是有点太长,理解没有评论,但如果你想添加一个新的工作表内的工作簿,有myWorkbook.Sheets.Add()方法(其中myWorkbook是当前工作簿的引用)。

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.sheets.add(v=office.14).aspx