2013-09-13 3 views
2

Я написал Excel Addin для Office 2013 с языком C#.Открыть существующий файл Excel в текущем экземпляре

Я знаю, что есть несколько способов открыть существующий файл 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); 

Но этот код открывает Sample.xlsx в новом экземпляре Ехчел.

Любая идея?

Заранее спасибо.

ответ

6

Вместо создания нового объекта, используйте Marshal.GetActiveObject:

Excel.Application excelApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application"); 
+0

Я использовал ваше решение, но ничего не изменилось. Это все еще открывает файл в новом экземпляре Excel. – Mori

+0

Это прекрасно работает для меня. Может ли это быть вашей конфигурацией Excel, не позволяя MDI? –

3

раствор Plus @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); 
Смежные вопросы