如何在Azure上使用.NET運行IronWord

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWord是一個強大的.NET程式庫,用於以程式方式建立、編輯和讀取Word文件。 它可以無縫地運行於多種Azure服務上,包括Azure應用服務、Azure函式和Azure容器實例。

安裝IronWord

首先從官方NuGet倉庫安裝IronWord NuGet包:

Install-Package IronWord

Azure託管考量

選擇正確的Azure服務層級

IronWord在提供持續計算資源的Azure服務計畫上表現最佳。 對於大多數中小型用途,基本(B1)應用服務計畫就足夠。 如果您的應用程式需要處理大量的Word文件或執行複雜的格式化任務,建議升級到標準(S1)或更高級別,以避免性能瓶頸。

支援的.NET執行環境和相容性

IronWord可以直接與Azure託管解決方案中常用的以下框架配合使用:

  • .NET 6+(建議使用LTS)
  • .NET Core 3.1
  • .NET Standard 2.1

這使您可以在各種Azure服務如應用服務、Azure函式和Docker容器中部署IronWord,而不必擔心相容性問題。

在Azure上使用Docker部署

使用IronWord的容器化部署

如果您希望對運行時環境有最大控制權,可以考慮在Azure容器實例(ACI)或Azure Kubernetes服務(AKS)中使用Docker容器部署IronWord。 這使您可以:

  • 預先載入模板或靜態資源
  • 配置文件處理設置
  • 在操作系統層面微調性能

要開始,請使用基礎映像,例如mcr.microsoft.com/dotnet/aspnet:6.0或7.0,並通過NuGet或手動DLL包含IronWord。

使用Azure函式的無伺服器架構

在Azure函式中使用IronWord

IronWord完全相容於運行在.NET 6或更高版本上的Azure Functions v4。 這使得輕量級、事件驅動的文件生成成為可能—非常適合於如下場景:

  • 通過HTTP實現隨需報告建立
  • 從表單提交生成Word文件
  • 將結構化資料轉換成.docx格式

Azure函式範例:按請求生成Word文件

以下是一個現實世界的Azure函式範例,根據HTTP請求建立並返回Word文件:

using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;

public static class WordFunction
{
    [FunctionName("GenerateWordDoc")]
    public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("Processing request to generate Word document...");

        // Set your IronWord license key
        IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";

        // Create and populate Word document
        var doc = new WordDocument();
        Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
        Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
        doc.AddParagraph(para1);
        doc.AddParagraph(para2);

        // Save to temporary file
        string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
        doc.SaveAs(tempPath);

        // Read the file bytes
        byte[] fileBytes = File.ReadAllBytes(tempPath);

        // Optionally delete the temp file
        File.Delete(tempPath);

        // Build the response with the document as an attachment
        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(fileBytes)
        };
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue(
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

        return response;
    }
}
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using System.Net.Http.Headers;
using IronWord;
using IronWord.Models;
using System.IO;
using System.Threading.Tasks;

public static class WordFunction
{
    [FunctionName("GenerateWordDoc")]
    public static HttpResponseMessage Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        log.LogInformation("Processing request to generate Word document...");

        // Set your IronWord license key
        IronWord.License.LicenseKey = "YOUR-LICENSE-KEY";

        // Create and populate Word document
        var doc = new WordDocument();
        Paragraph para1 = new Paragraph(new TextContent("This Word document was generated by IronWord in an Azure Function."));
        Paragraph para2 = new Paragraph(new TextContent($"Timestamp: {System.DateTime.UtcNow}"));
        doc.AddParagraph(para1);
        doc.AddParagraph(para2);

        // Save to temporary file
        string tempPath = Path.GetTempFileName().Replace(".tmp", ".docx");
        doc.SaveAs(tempPath);

        // Read the file bytes
        byte[] fileBytes = File.ReadAllBytes(tempPath);

        // Optionally delete the temp file
        File.Delete(tempPath);

        // Build the response with the document as an attachment
        var response = new HttpResponseMessage(HttpStatusCode.OK)
        {
            Content = new ByteArrayContent(fileBytes)
        };
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
        {
            FileName = $"IronWord_{System.DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"
        };
        response.Content.Headers.ContentType = new MediaTypeHeaderValue(
            "application/vnd.openxmlformats-officedocument.wordprocessingml.document");

        return response;
    }
}
Imports System
Imports System.Net
Imports System.Net.Http
Imports Microsoft.AspNetCore.Http
Imports Microsoft.Azure.WebJobs
Imports Microsoft.Azure.WebJobs.Extensions.Http
Imports Microsoft.Extensions.Logging
Imports System.Net.Http.Headers
Imports IronWord
Imports IronWord.Models
Imports System.IO
Imports System.Threading.Tasks

Public Module WordFunction
	<FunctionName("GenerateWordDoc")>
	Public Function Run(<HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route := Nothing)> ByVal req As HttpRequest, ByVal log As ILogger) As HttpResponseMessage
		log.LogInformation("Processing request to generate Word document...")

		' Set your IronWord license key
		IronWord.License.LicenseKey = "YOUR-LICENSE-KEY"

		' Create and populate Word document
		Dim doc = New WordDocument()
		Dim para1 As New Paragraph(New TextContent("This Word document was generated by IronWord in an Azure Function."))
		Dim para2 As New Paragraph(New TextContent($"Timestamp: {DateTime.UtcNow}"))
		doc.AddParagraph(para1)
		doc.AddParagraph(para2)

		' Save to temporary file
		Dim tempPath As String = Path.GetTempFileName().Replace(".tmp", ".docx")
		doc.SaveAs(tempPath)

		' Read the file bytes
		Dim fileBytes() As Byte = File.ReadAllBytes(tempPath)

		' Optionally delete the temp file
		File.Delete(tempPath)

		' Build the response with the document as an attachment
		Dim response = New HttpResponseMessage(HttpStatusCode.OK) With {.Content = New ByteArrayContent(fileBytes)}
		response.Content.Headers.ContentDisposition = New ContentDispositionHeaderValue("attachment") With {.FileName = $"IronWord_{DateTime.UtcNow:yyyyMMdd_HHmmss}.docx"}
		response.Content.Headers.ContentType = New MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.wordprocessingml.document")

		Return response
	End Function
End Module
$vbLabelText   $csharpLabel

程式碼說明:

  1. 我們定義了一個名稱為"GenerateWordDoc"的Azure函式。
  2. 該函式由HTTP GET或POST請求觸發,並在開始處理時記錄一條消息。
  3. 透過設定IronWord.License.LicenseKey來指定IronWord的授權金鑰(用您的實際金鑰替換"YOUR-LICENSE-KEY")。
  4. 使用IronWord的API建立一個新的WordDocument。
  5. 向文件中新增兩個段落——一個是靜態文字,另一個顯示目前的UTC時間戳。
  6. 文件使用doc.SaveAs(tempPath)方法保存到伺服器的臨時.docx文件中。
  7. 使用File.ReadAllBytes將保存的文件讀入位元組陣列,準備好供下載。
  8. 臨時文件在讀取後立即刪除以保持系統清潔。
  9. 構建一個HttpResponseMessage,其包含文件的位元組內容作為可下載附件。
  10. Content-Disposition標頭使用當前日期和時間設置下載文件名。
  11. Content-Type標頭設置為"application/vnd.openxmlformats-officedocument.wordprocessingml.document",以表明為Word文件格式。

常見問題

設置IronWord於Azure上的第一步是什麼?

設置IronWord於Azure上的第一步是建立一個Azure帳戶(如果還沒有)。然後,您需要設置一個新的Azure App Service並在其中部署您的.NET應用程式,使用IronWord。

如何使用IronWord在Azure上部署.NET應用程式?

要使用IronWord在Azure上部署.NET應用程式,您應該打包您的應用程式及其依賴項,包括IronWord程式庫,並上傳到您的Azure App Service。您可以使用Visual Studio Publish或Azure DevOps管道等工具來完成此過程。

我需要任何特定的Azure服務來運行IronWord嗎?

IronWord可以在標準的Azure App Services上運行。然而,為了獲得最佳性能,建議使用一個為您的應用需求提供充足資源的計畫。

可以將IronWord與Azure Functions結合使用嗎?

是的,可以將IronWord與Azure Functions整合使用,以無伺服器架構處理Word文件。確保Azure Function環境有IronWord所需的依賴項。

IronWord如何增強Azure上的Word文件處理?

IronWord通過提供強大的.NET程式庫,增強Azure上的Word文件處理,能輕鬆整合Azure服務,允許高效地建立、操作和轉換Word文件。

有辦法自動化Azure上的IronWord任務嗎?

是的,您可以使用Azure Logic Apps或Azure Functions,根據特定事件或時間表觸發Word文件處理,來自動化Azure上的IronWord任務。

使用IronWord於Azure的好處是什麼?

在Azure上使用IronWord可以進行可擴展和可靠的Word文件處理,利用Azure的雲基礎設施處理大量文件,同時保持高效能。

我可以將IronWord與Azure Blob Storage整合嗎?

是的,您可以將IronWord與Azure Blob Storage整合,以儲存及檢索Word文件,使您的Azure環境中的文件處理與儲存管理暢通無阻。

如何確保IronWord在Azure上有效運行?

為了確保IronWord在Azure上有效運行,選擇符合您工作負載的服務計畫,優化應用程式的程式碼,並實施適當的錯誤處理和記錄來進行故障排除。

在Azure上使用IronWord有任何先決條件嗎?

在Azure上使用IronWord的先決條件包括:設有.NET環境,擁有具有必要許可的Azure帳戶,以及在專案中包含IronWord程式庫。

Kye Stuart
技術作家

Kye Stuart在Iron Software結合了編碼熱情與寫作技能。就讀於Yoobee學院,專攻軟體部署,現在將複雜的技術概念轉化為清晰的教育內容。Kye重視終身學習,樂於迎接新的技術挑戰。

在工作之外,他喜歡PC遊戲、在Twitch上直播,以及戶外活動如園藝和帶他的狗Jaiya散步。Kye的直率方法使他成為Iron Software全球開發者解謎技術使命的關鍵。

準備開始了嗎?
Nuget 下載 49,323 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動?

想要快速證明嗎? PM > Install-Package IronWord
運行範例觀看您的資料變成Word檔。