Excel ЧаВо

Как запустить Excel из консольного приложения или в отдельном потоке (TThread)


Консольное приложение и дочерний поток (класс TThread) не предполагают работу с COM сервером, как это сделано в главном потоке для Application в VCL. Для того чтобы все работало, необходим вызов функции WinAPI CoInitialize.

{$APPTYPE CONSOLE} // для консольного приложения

var

NeedToUninitialize: Boolean; … begin

// NeedToUninitialize := Succeeded(CoInitialize(nil));

NeedToUninitialize := Succeeded(CoInitializeEx(nil, COINIT_MULTITHREADED)); try

// здесь работаем с Excel'ем

finally

if NeedToUninitialize then CoUninitialize; end; end.

Отличие при работе в Thread — весь код работы должен быть помещен в метод TThread.Execute.

Для C# ничего дополнительно вызывать не нужно — все работает, что для WinForms, что для Console, что для объекта класса Thread().

CoInitializeEx

OleInitialize



Содержание раздела