在当前实例中打开现有的Excel文件

时间:2013-09-13 09:02:52

标签: c# excel excel-addins

我使用C#语言编写了一个用于Office 2013的Excel Addin。

我知道有几种方法可以打开现有的Excel文件,但是所有这些文件都在Excel上的新实例中打开文件。

我有一个Excel的当前实例,并希望当有人点击某个按钮时,新文件会以当前的异常(不是新的)打开!

例如我使用以下代码:

Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true;
string workbookPath = (@"C:\Downloads\Sample.xlsx");
Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
    0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
    true, false, 0, true, false, false);

但是这段代码在excel文件的新实例中打开了Sample.xlsx。

任何想法?

提前致谢。

2 个答案:

答案 0 :(得分:6)

使用Marshal.GetActiveObject

,而不是创建新对象
Excel.Application excelApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");

答案 1 :(得分:3)

加上@LS_dev解决方案,我添加了excelApp.ActiveWorkbook.Close()命令使其正常工作。

Excel.Application excelApp =  (Excel.Application) System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
        excelApp.ActiveWorkbook.Close();
        string workbookPath = (@"C:\Downloads\Sample.xlsx");
        Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(workbookPath,
                0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
                true, false, 0, true, false, false);