Windows 2008 R2服务器上的Microsoft.Office.Interop.Excel程序集问题

时间:2016-02-02 10:52:56

标签: excel interop

我们的任务是以编程方式运行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)中托管时,功能无法正常工作。

为此,我们所做的更改是: -

  1. 控制面板 - >管理工具 - >组件服务 计算机 - >我的电脑 - > DCOM配置 - > Microsoft Excel应用程序 - >特性

    1.1。在安全选项卡中,我们通过添加用户(IUSR)并授予他所有访问权限来自定义所有权限。

    执行这些更改后,我们可以创建Interop.Excel的实例。但我们无法打开工作簿。

    1.2。在Microsoft Excel应用程序peroperties的“标识”选项卡中,默认情况下选择“启动用户”。

    将值更改为“交互式用户”后,我们可以打开工作簿。

    但我们无法运行宏。

    1.3。 C:\的Windows \ system32 \设置\ systemprofile

    在此位置,我们创建了Desktop文件夹。对于此文件夹属性,在安全选项卡中,我们创建了用户(IUSR)并给予完全控制。

  2. 现在,即使在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上运行。

    任何人都可以建议解决此问题的正确方法。

0 个答案:

没有答案