2

我用 C# 语言为 Office 2013 编写了一个 Excel 插件。

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

我有一个 Excel 的当前实例,并且希望当有人点击一个按钮时,新文件在当前 isctance 中打开(不是新文件)!

例如,我使用以下代码:

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。

任何的想法?

提前致谢。

4

2 回答 2

6

不要创建新对象,而是使用Marshal.GetActiveObject

Excel.Application excelApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
于 2013-09-13T09:11:50.010 回答
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);
于 2013-09-13T12:52:45.693 回答