在IIS7中打开Excel 2010工作簿导致“HRESULT异常:0x800A03EC”

时间:2013-05-10 17:03:02

标签: c# excel iis-7

我编写此代码以打开excel文件:

    private readonly object _missing = Type.Missing;

    private IEnumerable<CellModel> GetUsedCells(string fileName)
    {
        SetNewCurrentCulture();//set "en-US" culture

        var application = new Application();
        var workbooks = application.Workbooks;
        Workbook workbook = null;

        try
        {
            workbook = workbooks
                .Open(fileName,
                      0, false, _missing, "", "",
                      true, XlPlatform.xlWindows, _missing, false, false,
                      _missing, false, false, XlCorruptLoad.xlNormalLoad
                );
        }
        finally
        {
            //realocate memory

            if(workbook != null)
            {
                ReleaseComObject(workbook);
                workbook = null;
            }

            workbooks.Close();
            ReleaseComObject(workbooks);
            workbooks = null;

            application.Quit();
            ReleaseComObject(application);
            application = null;

            GC.GetTotalMemory(false);
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();
            GC.GetTotalMemory(true);

            ResetCurrentCulture();//reset old culture
        }
    }

在Open方法中出现此错误:“HRESULT异常:0x800A03EC”

注释:

  • 我使用vs2012,我的项目的Target Framework是4,而Microsoft.Office.Interop.Excel的版本是14.0.0.0

  • 服务器信息:Windows Server 2008 32位,IIS7,Excel 2010

  • 我在“C:\ Windows \ System32 \ config \ systemprofile”中创建桌面文件夹,并将权限设置为“网络服务”和“用户”

  • 在“Microsoft Excel应用程序”中更改DCOM配置中的权限并选择“交互式用户”

  • 为“C:\ Windows \ Temp”设置“网络服务”和“用户”的权限

我很困惑。请帮帮我!

1 个答案:

答案 0 :(得分:3)

Interop is NOT supported in sever-scenarios by MS

有许多选项可以在服务器上没有Interop /安装Excel的情况下读取/编辑/创建Excel文件:

MS提供免费的OpenXML SDK V 2.0 - 请参阅http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx(仅限XLSX)

这可以读取+写入所有MS Office文件(包括Excel)。

另一个免费选项见http://www.codeproject.com/KB/office/OpenXML.aspx(仅限XLSX)

如果你需要更多像处理旧的Excel版本(如XLS,不仅仅是XLSX),渲染,创建PDF,公式等,那么有不同的免费和商业库,如ClosedXML(免费,仅限XLSX), EPPlus(免费,仅限XLSX),Aspose.CellsSpreadsheetGearLibXLFlexcel等。