繁体   English   中英

如何使用C#在Excel中插入现有工作表?

[英]How to insert existing worksheet in Excel using C#?

我正在尝试将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();

从MVP:

我相信您想要的是Worksheet.Copy方法。 假设您使用的是VSTO,下面的代码演示了一种将工作表从非VSTO工作簿复制到VSTO定制中的工作簿的方法。 此特定示例将非VSTO工作簿(名为“ MyWorkbook.xls”)中的第一个工作表复制到“ Sheet3”之后的VSTO工作簿中。

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.Worksheet,而VSTO工作表(即Globals.Sheet3)是Microsoft.Office.Tools.Excel.Worksheet。 InnerObject属性公开Microsoft.Office.Tools.Excel.Worksheet基础的Microsoft.Office.Interop.Excel.Worksheet。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM