如何使用c#在Excel中插入现有的工作表

本文关键字:工作 插入 何使用 Excel | 更新日期: 2023-09-27 18:05:34

我正在尝试从Excel插入现有的工作表到我当前的工作表。但是,它不是插入到我当前的工作表中,而是创建新的工作表。我的代码中遗漏了什么?

我正在使用这个:

Workbook wkActive = Globals.ThisAddIn.Application.ActiveWorkbook;
objBook = Globals.ThisAddIn.Application.Workbooks.Open(IdsTemplatePath, 0, true, 5, "", "", true, XlPlatform.xlWindows, "'t", false, false, 0, true, false, false);                                
wkActive.Sheets.Add(objBook.Sheets[1], Type.Missing, Type.Missing, Type.Missing);
wkActive.Save();
wkActive.Close();

如何使用c#在Excel中插入现有的工作表

来自MVP:

我相信工作表。复制方法就是你想要的。假设您正在使用VSTO,下面的代码演示了将工作表从非VSTO工作簿复制到VSTO自定义工作簿中的一种方法。这个特定的示例将名为"MyWorkbook.xls"的非VSTO工作簿中的第一个工作表复制到VSTO工作簿中,位于"Sheet3"之后。

Excel.Workbook workbook = Globals.ThisWorkbook.Application.Workbooks.Open(@"C:'MyWorkbook.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
Excel.Worksheet worksheet = workbook.Sheets[1] as Excel.Worksheet;
worksheet.Copy(missing, Globals.Sheet3.InnerObject);

代码首先打开一个名为"MyWorkbook.xls"的非vsto工作簿。然后,代码通过调用非VSTO工作表的Copy方法,将此工作簿的第一个工作表复制到VSTO工作簿中,并传入要在其之后复制非VSTO工作表的VSTO工作表。

这段代码中唯一有点棘手的vsto特定部分是它传递InnerObject属性而不是Globals。将Sheet3放入Copy方法中。这是因为Copy期望的是Microsoft.Office.Interop.Excel。工作表,而VSTO工作表(即global . sheet3)是microsoft . office . tools . excel .工作表。InnerObject属性公开microsoft.office . interop . excel .工作表,它是microsoft.office . tools . excel .工作表的基础。