在Azure中托管的ASP.NET Core中读取Excel文件

20 浏览
0 Comments

在Azure中托管的ASP.NET Core中读取Excel文件

我有一个端点,应该从Excel文件中返回一个值。

在本地主机上,通过使用以下代码启用UseStaticFiles中间件,并将Excel文件添加到Resources文件夹中来实现:

app.UseStaticFiles(new StaticFileOptions
{
   FileProvider = new PhysicalFileProvider(
       Path.Combine(env.ContentRootPath, "Resources")),
   RequestPath = "/Resources"
});

然而,当我将其发布到Azure托管时,它显示以下错误,我无法访问我的应用程序和Excel文件。

enter image description here

在我移除UseStaticFiles中间件之后,应用程序可以正常工作,只是缺少了Excel文件。

那么我应该如何在Azure环境中发布和访问这个文件呢?

0
0 Comments

问题的出现原因:需要在ASP.NET Core中的Azure中托管的项目中读取Excel文件。

解决方法:通过组合“Clean Windows Azure Website”和“Accessing wwwroot folder”两个解决方案来解决。不需要中间件,只需使用IWebHostEnvironment服务就可以访问所需的Excel文件,该文件现在位于项目中的wwwroot/Resources/目录中。

以下是解决方法的代码示例:

private readonly IWebHostEnvironment _env;
public ProjectService(IWebHostEnvironment env)
{
   _env = env;
}
public double GetExcelValue() 
{
   string excelFilePath = Path.Combine(_env.WebRootPath, "Resources/file.xlsx");
   (...)
}

以上方法可以通过IWebHostEnvironment服务获取项目中wwwroot/Resources/目录下的Excel文件路径。

0
0 Comments

问题的原因:在ASP.NET Core中托管在Azure中时,无法直接从特定单元格返回Excel文件中的值。

解决方法:如果需要提供静态文件,可以将文件放在Azure存储中,并使用所需的公共访问级别。如果需要从Excel文件中读取,可以使用不需要Interop的方式,因为在App Service上没有可用的Excel。一种选择是使用OpenXML XML SDK,该SDK构建在System.IO.Packaging API上,并提供强类型类来操作符合Office Open XML文件格式规范的文档。另一种选择是使用开源解决方案ClosedXML,它是OpenXML的包装器,使得与其一起工作更加容易。

问题在于在应用程序托管在Azure时访问Excel文件。我将尝试使用Azure存储,谢谢!

0