我可以在Azure上用.NET运行IronXL吗?

查克尼特·宾
查克尼特·宾
2022年二月28日
更新 2024年十月20日
分享:
This article was translated from English: Does it need improvement?
Translated
View the article in English

是的。 IronXL 可以在 Azure 上用于生成 QR 和条形码在 C# 和 VB .NET 应用程序中,同时还可以从扫描的图像中读取条形码和 QR 码。

IronXL已在多个Azure平台上经过彻底测试,包括MVC网站、Azure Functions等等。


步骤 1

1. 安装 IronXL 以开始使用

首先使用 NuGet 安装:https://www.nuget.org/packages/IronXL.Excel

Install-Package IronXL.Excel

教程

2. 性能与Azure层次

我们建议 Azure B1 托管级别非常适合我们最终用户的库需求。 如果他们正在创建一个高吞吐量系统,可能需要对其进行升级。

3. 框架选择

我们发现IronXL for Core和for Framework都可以在Azure上运行。 .NET Standard应用程序在速度和稳定性上似乎具有小的性能优势,但在处理中会使用更多的内存。

Azure 免费层托管速度慢

Azure免费和共享层以及消费计划不适合QR处理。 我们推荐使用Azure B1托管/高级计划,这也是我们自己使用的方案。

4. Azure 上的 Docker

一种在 Azure 上控制性能的方法是在 Docker 容器中使用 IronXL 应用程序和函数。

我们提供了一个关于 Linux 和 Windows 实例的全面 IronXL Azure Docker 教程,推荐阅读。

5. 官方 Azure 函数支持

IronXL 支持 Azure Function (Azure Functions V3)。 它到目前为止还没有经过V4测试,但它在我们的队列中。

Azure 函数代码示例

在 Azure Functions v3.3.1.0+ 上测试过。 这是示例代码

[FunctionName("excel")]
public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
IronXL.License.LicenseKey = "Key";
var workBook = WorkBook.Load("test-wb.xlsx");
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(workBook.ToByteArray());
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"){ FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx" };
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return result;
}
[FunctionName("excel")]
public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
IronXL.License.LicenseKey = "Key";
var workBook = WorkBook.Load("test-wb.xlsx");
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(workBook.ToByteArray());
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"){ FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx" };
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
return result;
}
<FunctionName("excel")>
Public Shared Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger) As HttpResponseMessage
log.LogInformation("C# HTTP trigger function processed a request.")
IronXL.License.LicenseKey = "Key"
Dim workBook = WorkBook.Load("test-wb.xlsx")
Dim result = New HttpResponseMessage(HttpStatusCode.OK)
result.Content = New ByteArrayContent(workBook.ToByteArray())
result.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"{DateTime.Now:yyyyMMddmm}.xlsx"}
result.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
Return result
End Function
$vbLabelText   $csharpLabel
查克尼特·宾
软件工程师
Chaknith 负责 IronXL 和 IronBarcode 的工作。他在 C# 和 .NET 方面拥有深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的洞察力,有助于提升产品、文档和整体体验。