from: http://loveu.blog.51cto.com/201754/221367
最近在windows2003服务器上部署Excel项目,里面涉及的代码有:
Excel.Application excelApplication = null;
if (reuseExcelApplication)
{
//try to get existing application
try
{
excelApplication =
Marshal.GetActiveObject("Excel.Application") as Excel.Application;
}
catch (COMException)
{
}
}
if (excelApplication == null)
{
excelApplication = new Excel.Application();
createdExcelApplication = true;
}
if (reuseExcelApplication)
{
//try to get existing application
try
{
excelApplication =
Marshal.GetActiveObject("Excel.Application") as Excel.Application;
}
catch (COMException)
{
}
}
if (excelApplication == null)
{
excelApplication = new Excel.Application();
createdExcelApplication = true;
}
在我的XP上部署时,出现“检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005”,从网上搜了一下常见的有如下解决方案:
在XP下的解决办法很简单,如下步骤:
1:在服务器上安装office的Excel软件.
2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"
3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"
4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框
5:点击"标识"标签,选择"交互式用户"
6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加
一个"ASP.net"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"ASP.net"用户,然后赋予"本地访问"权限.
这样,我们便配置好了相应的Excel的DCOM权限.
注意:这是在WINxp上配置的,在2003上,ASP.net用户改为NETWORK SERVICE用户。
根据上述操作了一遍,结果还是这个错误,想到之前装了office 2003查看2007的插件,在组件服务中又将“Microsoft Office Excel 2007工作簿”再配置一遍才解决问题,配置过程如下:
1、在"DCOM配置"中找到"Microsoft Office Excel 工作簿",在它上面点击右键,然后点击"属性",弹出属性对话框
2、按照上述方法再配置一遍即成功!
接着,要将我的应用程序部署在Windows2003下,本人按照上述方法怎么弄都不成功,后来google了N下,在微软官方网站上看到了出现该问题的可能原因(链接忘了,郁闷):只有当前的登录用户能够对Excel组件进行操作,因此,基于windows2003的权限问题,按照上述操作不起作用,正确的做法是
1 运行-》dcomcnfg.exe
2 在DCOM中找到Microsoft Excel应用程序,右键 -》属性-》标识-》下列用户
3 一般当前登录用户为管理员(Administrator),输入用户名密码 ,确认。
OK,你再试试!
方法很简单,找方法的过程很难!