我正在尝试将工作表从输入 Excel 文件复制到 VSTO Excel 工作簿中。从输入 Excel 文件复制工作表时,我收到“不支持此类接口”的消息。如果我使用 Interop Excel 类型的相同工作簿,则复制工作表功能可以正常工作。请帮我解决这个问题。
private Excel.Application _excel;
private Excel.Workbook _wb;
_excel = new Excel.Application();
_wb = _excel.Workbooks.Open(strFileName);
Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets["sheet1"];
_wb.Worksheets.Copy(ws, Type.Missing);
首先,无需使用
Globals
命名空间来访问 Excel 应用程序实例:
Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets["sheet1"];
_wb.Worksheets.Copy(ws, Type.Missing);
其次,如果您开发 VSTO 加载项,则无需在代码中创建新的 Excel 应用程序实例:
_excel = new Excel.Application();
相反,请使用
Application
类的 ThisAddin
属性。
注意,Workbooks属性返回一个代表所有打开的工作簿的Workbooks集合。因此,您只需将工作表从打开的工作簿复制到现有工作簿即可。