COMオブジェクトに何らかの問題がありますASP.NET WebApiはAzureのCOM(Excel)で動作しません
Excelファイルを作成して保存するWeb APIコントローラがあります。
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Workbooks.Add();
Microsoft.Office.Interop.Excel._Worksheet workSheet = excel.ActiveSheet;
try
{
workSheet.Cells[1, "A"] = "Id";
-//-
int row = 2;
foreach (var _c in db.Clients)
{
workSheet.Cells[row, "A"] = _c.ClientId;
-//-
row++;
}
workSheet.Range["A1"].AutoFormat(Microsoft.Office.Interop.Excel.XlRangeAutoFormat.xlRangeAutoFormatClassic1);
fileName = string.Format(@"{0}/ExcelData.xlsx", System.Web.HttpContext.Current.Server.MapPath("~/Reports"));
workSheet.SaveAs(fileName);
作成後、コントローラはこのファイルのURLを返します。私のローカルホスト上 それは優秀に動作しますが、ホストとしてのAzureクラウドにデプロイした後、私は例外を持っている:
ExceptionMessage:
"Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))."
ExceptionType:
"System.Runtime.InteropServices.COMException"
Message:
"An error has occurred."
StackTrace:
" at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
となど
私はすでにx64の間で切り替えるようにしてみてくださいそして、x86 - それは、誰かがその悩みを解決する方法を知っている場合は、
を助け、私はより同じ問題を抱えていた私に
ExcelはAzureサービスにインストールされませんので、interopを使用しないでください。 [ClosedXMLのようなもの](https://github.com/closedxml/closedxml)を使う方がはるかに簡単です – Crowcoder
Webアプリケーションとしてデプロイしましたか? VM?クラウドサービス(Web /ワーカーの役割)? –