Excelを自動化して、サーバー上にレポートを生成し、要求されたときにこれをユーザーに電子メールで送信しようとしています。私が抱えている問題は、Excelドキュメントを作成してデータを書き込んだ後、pXL-> Quit()を発行した後でもプログラムが終了しないことです。指図。これは、「閉じる」ための私の指示が優れていることです。
pXL->Workbooks->Close(LCID(LOCALE_USER_DEFAULT));
pXLWSs.Reset(); //Releases Worksheets
pXLWS.Reset();//Releases Workbooks
pXL->Quit();// "Quits" Excel ---> This does not quit excel
pXL.Reset();//Release Excel application?
CoUninitialize();//Uninitialise COMS
この特定の問題に関するかなりの数の記事とブログを読みましたが、これは、Excelに関連付けられているすべてのCOMSを解放していないためと思われます。そこで、COMSの初期化を数回試みました。私は
CoUninitialize();
4回、これはうまくいきました!しかし、残念ながら、それは常に機能するわけではありません。
Excelを正常に閉じる方法を知っている人はいますか?
Microsoftがサーバー側のExcelAutomationをサポートしていないことは知っていますが、回避策を見つけたいと思っていました。私はあなたが簡単にできることも知っています
WinExec("taskkill /F /IM \"excel.exe\"",0);
これはExcelを完全に強制終了しますが、かなりの数のExcelアプリケーションが生成されるアプリの将来について心配しています。その場合、Excelを個別に強制終了する必要があり、そこからすべてが乱雑になります。
どんな助けでも大歓迎です!