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

时间:2015-07-30 08:43:09

标签: c# vsto excel-interop

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

我正在使用它:

Interval

1 个答案:

答案 0 :(得分:0)

来自MVP:

我相信Worksheet.Copy方法就是你想要的。假设您使用的是VSTO,以下代码演示了一种将工作表从非VSTO工作簿复制到VSTO自定义中的工作簿的方法。此特定示例将名为“MyWorkbook.xls”的非VSTO工作簿中的第一个工作表复制到“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.Works工作表的基础Microsoft.Office.Interop.Excel.Works工作表。