我正在开发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位应用程序”为真。