C++ Excel Automation Workbooks.Open()函数在通过Windows服务调用应用程序时引发灾难性错误
我的一个应用程序是关于在创建一些图形文件时自动化MS Excel。我正在使用基本的tli方法来实现这一点当我开始在windows7上对其进行一些修改时,xp机器上运行的代码出现了问题。发生的情况如下所述: 导致问题的代码行如下所示:C++ Excel Automation Workbooks.Open()函数在通过Windows服务调用应用程序时引发灾难性错误,c++,excel,windows-services,C++,Excel,Windows Services,我的一个应用程序是关于在创建一些图形文件时自动化MS Excel。我正在使用基本的tli方法来实现这一点当我开始在windows7上对其进行一些修改时,xp机器上运行的代码出现了问题。发生的情况如下所述: 导致问题的代码行如下所示: if(!app.CreateDispatch("Excel.Application")) { fprintf(log, "%s\n", "Microsoft excel, could not be launched. Please make sure it
if(!app.CreateDispatch("Excel.Application"))
{
fprintf(log, "%s\n", "Microsoft excel, could not be launched. Please make sure it is installed on the target machine.");
return;
}
else
{
//Make the application visible and give the user control of
//Microsoft Excel.
//// app.put_Visible(TRUE);
//// app.put_UserControl(TRUE);
CString Title;
CString s = app.get_Version();
//Excel 2003 takes 13 arguments hence we need to prepare options variant
COleVariant
covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
CWorkbooks b=app.get_Workbooks();
CWorkbook bkThis, bkMaster;
try
{
bkThis=b.Open(strFileName,
covOptional, // UpdateLinks,
covOptional, // ReadOnly,
covOptional, // Format,
covOptional, // Password,
covOptional, // WriteResPassword,
covTrue, // IgnoreReadOnlyRecommended,
covOptional, // Origin,
covOptional, // Delimiter,
covOptional, // Editable,
covOptional, // Notify,
covOptional, // Converter,
covOptional, // AddToMru,
covOptional, // Local,
covOptional // CorruptLoad,
);
}
catch(CException *e)
{
fprintf(log, "The input file being tried: %s\n", strFileName);
fprintf(log, "%s(%d): OLE Execption caught: SCODE = %x",__FILE__, __LINE__, COleException::Process(e));
e->Delete();
app.Quit();
app.DetachDispatch();
app.ReleaseDispatch();
return;
}
- 当我通过Visual studio运行代码时,它运行正常,但当我使用Windows服务启动它时,Workbooks.Open()函数失败,出现8000FFFF Catastrpic错误
- 安全特权应该不会有问题,因为在调用此代码之前,我的ADO数据库连接正在正常运行
YK当我使用Windows服务时,Microsoft当前不推荐也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在此环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁。此问题可能与Windows Vista中出于安全原因所做的更改有关。感谢各位指点人员,我对此表示感谢。看来我现在得做些变通了。大家好,有没有在vc++中为服务器类应用程序使用msxml或openXML实现xls自动化的示例代码?我试过了,但在谷歌上找不到。他们在msdn上描述的openXML只是关于c#和vb的提示。大家好,我从2012年3月15日起就一直在努力解决这个问题,但实际上我已经找到了解决方案。您需要在windows 7计算机中有一个可用的文件夹,如“C:\windows\SysWOW64\config\systemprofile\Desktop”,具体取决于您使用的计算机。如果是32位,则相应地修改。这将解决问题。多亏了互联网上一个名为“CSharper66”的个人资料。