ASP.NET网站和ms excel集成

时间:2014-11-19 12:09:09

标签: c# asp.net excel excel-automation

我正在开发asp.net网站和excel集成项目。我有一个excel文件有很多宏执行一些计算。我可以简单地传递单元格的值,并根据宏公式显示excel的其他单元格中的输出。 我需要从ASP.NET网站传递这些参数,并在asp.net webform上显示excel。 我能够使用以下代码实现此功能,并且在开发时可以正常工作。

     Application excel = new Application();
            excel.DisplayAlerts = false;
            excel.EnableEvents = true;
            //excel.Visible = true;

            Workbook wb = excel.Workbooks.Open(path, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", true, false, 0, true, 1, 0);
            Worksheet excelSheet = (Worksheet)wb.ActiveSheet;

            excelSheet.Cells[37, 11] = 65;
            excelSheet.Cells[37, 9] = 70;

            excelSheet.Cells[14, 8] = "A";
            excelSheet.Cells[15, 8] = "B";
            excelSheet.Cells[16, 8] = "C";


 try
            {
                excel.Run("Macro1", System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value
                    , System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value,
                    System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value,
                    System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value,
                    System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value, System.Reflection.Missing.Value,
                    System.Reflection.Missing.Value);
            }
            catch (Exception ex)
            { }


 try
            {
                wb.Save();
            }
            catch (Exception ex)
            { }


List<string> resultList = new List<string>();

            try
            {
                resultList.Add((excelSheet.Cells[37, 4] as Range).Value.ToString());
            }
            catch (Exception ex)
            {
                resultList.Add("");
            }
            try
            {
                resultList.Add((excelSheet.Cells[36, 9] as Range).Value.ToString());
            }
            catch (Exception ex)
            {
                resultList.Add("");
            }

当我将网站部署到生产服务器时,我收到以下错误 -

  

由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80070005拒绝访问。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))。

要解决此问题,我已应用以下解决方案,但无效 - 在其提到的大多数链接中,使用32位或64位发布应用程序,但我将其开发为asp.net网站,因此没有32位和64位选项。 在IIS,我已经“启用了32位应用程序”为真。

0 个答案:

没有答案