簡體   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