我们的任务是以编程方式运行excel宏。
在我们按照以下步骤操作时,在本地环境中工作正常:
1
Microsoft.Office.Interop.Excel.Application appExcel =
new Microsoft.Office.Interop.Excel.Application();
2
Microsoft.Office.Interop.Excel.Workbook workBook =
appExcel.Workbooks.Open("FilePath",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);`
第3
appExcel.Run("Macro name", "$W$5", 1, 0, "$Q$11:$Q$112",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
注意:
在localhost上一切正常,宏正在执行。但是在IIS(版本7.5)中托管时,功能无法正常工作。
为此,我们所做的更改是: -
控制面板 - >管理工具 - >组件服务 计算机 - >我的电脑 - > DCOM配置 - > Microsoft Excel应用程序 - >特性
1.1。在安全选项卡中,我们通过添加用户(IUSR)并授予他所有访问权限来自定义所有权限。
执行这些更改后,我们可以创建Interop.Excel的实例。但我们无法打开工作簿。
1.2。在Microsoft Excel应用程序peroperties的“标识”选项卡中,默认情况下选择“启动用户”。
将值更改为“交互式用户”后,我们可以打开工作簿。
但我们无法运行宏。
1.3。 C:\的Windows \ system32 \设置\ systemprofile
在此位置,我们创建了Desktop文件夹。对于此文件夹属性,在安全选项卡中,我们创建了用户(IUSR)并给予完全控制。
现在,即使在IIS托管站点上运行应用程序,我们也可以运行宏并获得所需的输出。
问题:
在我们将更改移动到生产服务器后进行所有更改后,我们在DCOM配置中找不到Microsoft Excel应用程序。 Microsoft Office未完全安装在生产服务器中。服务器上只安装了Excel软件。
我们在下面的代码行中得到空引用异常。
Microsoft.Office.Interop.Excel.Workbook workBook =
appExcel.Workbooks.Open("FilePath",
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
我们的生产服务器在Windows 2008 R2上运行。
任何人都可以建议解决此问题的正确方法。