0

我正在研究 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 位应用程序”设置为 true。

4

0 回答 0