Подробнее C # Автоматизация в Excel - PullRequest
2 голосов
/ 25 января 2011

Запускается новая книга Excel:

        Excel.Application oXL;
        Excel._Workbook oWB;

        oXL = new Excel.Application();
        oXL.Visible = true;

        oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));

Однако, что если кто-то захочет ...

- GetObject (в привычной парадигме автоматизации) для книги, которая уже загружена и открыта на экране? Или

- получить доступ и записать данные в закрытую книгу по пути?

Оба из них выполнимы по старым стандартам. Желательно последнее, хотя я не выбираю прямо сейчас. Спасибо за любую помощь.

1 Ответ

2 голосов
/ 25 января 2011

Вы можете получить существующий экземпляр Excel, используя:

Marshal.GetActiveObject("Excel.Application")

Это вызовет исключение COMException, если экземпляр Excel не запущен.

Одна ловушка автоматизации экземпляра Excelвидно, что ваши звонки могут быть неудачными, потому что Excel занят.Вам может потребоваться реализовать IMessageFilter , чтобы избежать этой проблемы.

Что касается доступа к закрытой книге по пути - вам нужно открыть книгу:

oXL.Workbooks.Open(...)
...