【问题标题】:Read an excel file in ASP.NET Core hosted in Azure读取托管在 Azure 中的 ASP.NET Core 中的 excel 文件
【发布时间】:2022-01-27 03:01:35
【问题描述】:

我有一个应该从 excel 文件返回值的端点。

在 localhost 上,通过使用此代码启用 UseStaticFiles 中间件并将 excel 文件添加到 Resources 文件夹中来工作:

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

但是,当我在 Azure 托管中发布它时,它会显示此错误,并且我无法访问我的应用程序或此 excel 文件。

删除UseStaticFiles 中间件后,应用程序运行良好,除了缺少的 excel 文件。

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

【问题讨论】:

  • 阅读本文。 docs.microsoft.com/en-us/aspnet/core/fundamentals/… 。如果服务器是 Linux,您可能会遇到权限问题,或者如果服务器是 Windows,则会出现“CopyAlways”缺失。但是一步一步阅读文档,你肯定会弄明白的。

标签: asp.net azure asp.net-core


【解决方案1】:

仅限UseStaticFiles 方法,而我quote,“启用静态文件服务”。这使您能够从 Excel 文件中的特定单元格返回值。

如果您正在寻找提供静态文件的服务,例如,您可以查看将文件放入 Azure 存储并使用所需的 public access level

如果您希望从 Excel 文件中读取,您可能想看看一种不需要 Interop 的方法,因为您不会在应用程序上使用 Excel服务。

启用选项是使用the OpenXML XML SDK

SDK 基于 System.IO.Packaging API 构建,并提供强类型类来操作符合 Office Open XML 文件格式规范的文档。

[...]

Open XML 文件格式对开发人员很有用,因为它们是一种开放标准,并且基于众所周知的技术:ZIP 和 XML。

另一种是像ClosedXML 这样的开源解决方案,它是OpenXML 的包装器,可以更轻松地使用它们。

ClosedXML 是一个 .NET 库,用于读取、操作和编写 Excel 2007+(.xlsx、.xlsm)文件。它旨在提供一个直观且用户友好的界面来处理底层 OpenXML API。

【讨论】:

  • 当应用程序托管在 Azure 中时,问题是访问 excel 文件。我去看看 Azure Storage,谢谢!
【解决方案2】:

我将Clean Windows Azure WebsiteAccessing 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");

   (...)
}

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 2022-11-09
    • 2017-09-07
    • 2018-09-14
    • 1970-01-01
    • 2017-03-26
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多