使用IRONWORD

如何在 C# 中使用 Word 範本生成 Word 文件

發佈 2024年10月24日
分享:

在現代應用程式中,能夠即時生成 Word 文件對於計費、發票、信件等各種用途來說是至關重要的。Microsoft Word 範本文件功能提供了一種強大的方式以確保一致性和效率。 然而,手動填寫這些模板可能既耗時又容易出錯。 這就是IronWordIron Software這是一個強大的 .NET 函式庫,旨在自動化程序化填充 Word 範本的過程。 在本文中,我們將介紹如何使用IronWord填寫 Word 文件模板並提供實例來說明該過程。

如何使用 Word 範本在 C# 中生成 Word 文件

  1. 在 Microsoft Visual Studio 中創建一個新項目。

  2. 安裝IronWord通過 NuGet 套件管理器。

  3. 建立一個 Word 樣板文件。

  4. 將資料插入 Word 文件並另存為新檔案。

  5. 在生成的 Word 文件中添加文字效果。

什麼是IronWord?

IronWord是一個來自 的 .NET 函式庫Iron Software旨在促進以程式化方式創建、操作和管理 Microsoft Word 文件。 這使得開發人員能夠自動化生成 Word 文件的過程,從而更輕鬆地在其應用中動態創建報告、發票、信件及其他類型的文件。

IronWord 的主要功能

1. C# 填寫 Word 範本及處理

IronWord允許使用 Word 範本在範本文件中定義佔位符,並在運行時用實際數據替換它們。

2. 文字處理

您可以輕鬆地在 Word 文件中插入、替換或刪除文字。

3. 格式化

該程式庫支援多種格式化選項,包括字型樣式、大小、顏色和段落對齊。

4. 表格和圖片

IronWord允許您在文件中插入和操作表格及圖像。

5. 相容性

它與不同版本的Microsoft Word 無縫協作,確保兼容性和使用方便性。

使用案例

  • 報告生成:自動生成含動態數據的詳細報告。
  • 發票創建:通過填寫客戶和交易詳情創建專業發票。
  • 合同管理:自動化創建包含個人化資訊的合同。
  • 函件和通知:為客戶或員工生成個性化的信函和通知。

    IronWord 簡化了在 .NET 應用程式中處理 Word 文件的過程,使其成為開發人員想要自動化文件生成和管理任務時的寶貴工具。

先決條件

在開始之前,請務必確認您已準備好以下項目:

  • 已在您的機器上安裝了 Visual Studio。
  • 已安裝最新的 .NET Framework。

步驟 1:在 Microsoft Visual Studio 中創建一個新專案。

現在,讓我們開始建立一個新的 Visual Studio 專案。

如何在 C# 中使用 Word 範本生成 Word 文件:圖 1

在下方螢幕上選擇主控台應用程式範本。

如何使用 C# 的 Word 範本生成 Word 文件:圖 2 - 選擇控制台應用程式

提供專案名稱和位置。

如何在 C# 使用 Word 範本生成 Word 文件:圖 3 - 提供名稱和位置

選擇 .NET 版本(最好是支援的最新版本),然後點擊建立。

如何在 C# 中使用 Word 範本生成 Word 文件:圖 4

步驟 2:安裝 IronWord NuGet 套件管理器。

在 Visual Studio 中從 NuGet 套件管理器安裝 IronWord NuGet 套件,如下所示。

如何使用 Word 模板在 C# 中生成 Word 文件:圖 5 - 從 NuGet 套件管理器中搜索 IronWord

或者,請使用以下指令透過 CLI 直接安裝它。

如何使用 C# 中的 Word 範本生成 Word 文件:圖 6 - 復製命令並將其粘貼到 NuGet 主控台應用程序中

dotnet add package IronWord --version 2024.9.1
dotnet add package IronWord --version 2024.9.1
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'dotnet add package IronWord --version 2024.9.1
VB   C#

步驟 3:建立 Word 範本文件。

現在,生成一個包含一到兩頁的 Word 範本文件,以便在 Word 文件生成過程中使用。

Dear {Name},
Thanks for Purchasing {product}, happy to serve you always. Your application dated {Date} has been approved. The product comes with an expiry date of {expiryDate}. Renew the product on or before expiry date.
Fell Free to contact {phone} or {email} for further queries.
Address: {Address}
Thank you,
{Sender}
Dear {Name},
Thanks for Purchasing {product}, happy to serve you always. Your application dated {Date} has been approved. The product comes with an expiry date of {expiryDate}. Renew the product on or before expiry date.
Fell Free to contact {phone} or {email} for further queries.
Address: {Address}
Thank you,
{Sender}
Dear
If True Then
	Name
End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
', Thanks for Purchasing
'{
'	product
'}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
', happy @to serve you always.Your application dated
'{
'	@Date
'}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'has been approved.The product comes @with an expiry @date @of
'{
'	expiryDate
'}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'.Renew the product on @or before expiry @date.Fell Free @to contact
'{
'	phone
'}
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'@or {email} for further queries.Address:
'{
'	Address
'}
Thank you,
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	Sender}
VB   C#

現在將上面的文件保存為 Template.docx。

步驟4:將資料插入到 Word 文件中並另存為新檔案。

using IronWord;
class Program
{
    static void Main()
    {
        License.LicenseKey = "your key";
        // Define the path to the template and the output file object sender
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";
        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);
            // Define a dictionary/ first table of placeholders and their replacements
            var replacements = new Dictionary<string, string>
            {
                { "{Name}", "John Doe" },
                { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
                { "{Address}", "123 Iron Street, Iron Software" },
                { "{product}", "IronWord" },
                { "{Sender}", "IronSoftware" },
                { "{phone}", "+123 456789" },
                { "{email}", "sale@ironsoftware.com" },
                { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
            };
            // Replace placeholders with actual data
            foreach (var replacement in replacements)
            {
                doc.Texts.ForEach(x=>x.Replace(replacement.Key, replacement.Value));
            }
            // Save the filled document
           doc.Save(outputPath);
        Console.WriteLine("Document filled and saved successfully.");
    }
}
using IronWord;
class Program
{
    static void Main()
    {
        License.LicenseKey = "your key";
        // Define the path to the template and the output file object sender
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";
        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);
            // Define a dictionary/ first table of placeholders and their replacements
            var replacements = new Dictionary<string, string>
            {
                { "{Name}", "John Doe" },
                { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
                { "{Address}", "123 Iron Street, Iron Software" },
                { "{product}", "IronWord" },
                { "{Sender}", "IronSoftware" },
                { "{phone}", "+123 456789" },
                { "{email}", "sale@ironsoftware.com" },
                { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
            };
            // Replace placeholders with actual data
            foreach (var replacement in replacements)
            {
                doc.Texts.ForEach(x=>x.Replace(replacement.Key, replacement.Value));
            }
            // Save the filled document
           doc.Save(outputPath);
        Console.WriteLine("Document filled and saved successfully.");
    }
}
Imports IronWord
Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "your key"
		' Define the path to the template and the output file object sender
		Dim templatePath As String = "Template.docx"
		Dim outputPath As String = "FilledDocument.docx"
		' Create a new instance of the WordDocument class
		Dim doc As New WordDocument(templatePath)
			' Define a dictionary/ first table of placeholders and their replacements
			Dim replacements = New Dictionary(Of String, String) From {
				{"{Name}", "John Doe"},
				{"{Date}", DateTime.Now.ToString("MMMM d, yyyy")},
				{"{Address}", "123 Iron Street, Iron Software"},
				{"{product}", "IronWord"},
				{"{Sender}", "IronSoftware"},
				{"{phone}", "+123 456789"},
				{"{email}", "sale@ironsoftware.com"},
				{"{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy")}
			}
			' Replace placeholders with actual data
			For Each replacement In replacements
				doc.Texts.ForEach(Function(x) x.Replace(replacement.Key, replacement.Value))
			Next replacement
			' Save the filled document
		   doc.Save(outputPath)
		Console.WriteLine("Document filled and saved successfully.")
	End Sub
End Class
VB   C#

解釋

提供的代碼展示了如何使用 IronWord 函式庫將特定數據填入 Word 文件範本。 以下是簡要說明:

  1. 許可證設置:程式碼首先設置 IronWord 的許可證密鑰以啟用其功能。

  2. 文件路徑:它指定了 Word 範本的路徑(Template.docx)和輸出檔案(FilledDocument.docx)3. 建立文件實例:使用模板路徑參考建立一個 `WordDocument` 的實例。

  3. 定義替換項:建立一個字典,其中的鍵代表模板中的佔位符,值代表要插入的數據。5. 替換佔位符:遍歷字典,將文檔中的每個佔位符替換為相應的數據。

  4. 保存文件:最後,使用保存方法和傳遞參數將更新後的文件保存到指定的輸出路徑。7. 完成訊息:打印訊息以確認文件已成功填寫並保存。

    輸出

    如何使用 Word 樣板在 C# 中生成 Word 文件:圖 7 - Word 文件輸出

步驟 5:向生成的 Word 文件添加文字效果。

IronWord 也允許添加各種文本效果,如下表所示。

在以下範例中,我們為 Word Iron Software 添加文字效果。

using IronWord;
using IronWord.Models;
class Program
{
    static void Main()
    {
        License.LicenseKey = "your key";
        // Define the path to the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";
        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);
            // Define a dictionary of placeholders and their replacements
            var replacements = new Dictionary<string, string>
            {
                { "{Name}", "John Doe" },
                { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
                { "{Address}", "123 Iron Street, Iron Software" },
                { "{product}", "IronWord" },
                { "{Sender}", "Sale," },
                { "{phone}", "+123 456789" },
                { "{email}", "sale@ironsoftware.com" },
                { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
            };
            // Replace placeholders with actual data
            foreach (var replacement in replacements)
            {
                doc.Texts.ForEach(x=>x.Replace(replacement.Key, replacement.Value));
            }
        // Save the filled document
        //doc.Save(outputPath);
        //Console.WriteLine("Document filled and saved successfully.");
        // Create and configure text style methods
        TextStyle textStyle = new TextStyle();
        textStyle.TextEffect = new TextEffect()
        {
            GlowEffect = new Glow()
            {
                GlowColor = IronWord.Models.Color.Aqua,
                GlowRadius = 10,
            },
        };
        // Add text with style or image
        doc.AddText(" IronSoftware").Style = textStyle;
        // Export new Word document
        doc.SaveAs("glowEffect.docx");
    }
}
using IronWord;
using IronWord.Models;
class Program
{
    static void Main()
    {
        License.LicenseKey = "your key";
        // Define the path to the template and the output file
        string templatePath = "Template.docx";
        string outputPath = "FilledDocument.docx";
        // Create a new instance of the WordDocument class
        WordDocument doc = new WordDocument(templatePath);
            // Define a dictionary of placeholders and their replacements
            var replacements = new Dictionary<string, string>
            {
                { "{Name}", "John Doe" },
                { "{Date}", DateTime.Now.ToString("MMMM d, yyyy") },
                { "{Address}", "123 Iron Street, Iron Software" },
                { "{product}", "IronWord" },
                { "{Sender}", "Sale," },
                { "{phone}", "+123 456789" },
                { "{email}", "sale@ironsoftware.com" },
                { "{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy") },
            };
            // Replace placeholders with actual data
            foreach (var replacement in replacements)
            {
                doc.Texts.ForEach(x=>x.Replace(replacement.Key, replacement.Value));
            }
        // Save the filled document
        //doc.Save(outputPath);
        //Console.WriteLine("Document filled and saved successfully.");
        // Create and configure text style methods
        TextStyle textStyle = new TextStyle();
        textStyle.TextEffect = new TextEffect()
        {
            GlowEffect = new Glow()
            {
                GlowColor = IronWord.Models.Color.Aqua,
                GlowRadius = 10,
            },
        };
        // Add text with style or image
        doc.AddText(" IronSoftware").Style = textStyle;
        // Export new Word document
        doc.SaveAs("glowEffect.docx");
    }
}
Imports IronWord
Imports IronWord.Models
Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "your key"
		' Define the path to the template and the output file
		Dim templatePath As String = "Template.docx"
		Dim outputPath As String = "FilledDocument.docx"
		' Create a new instance of the WordDocument class
		Dim doc As New WordDocument(templatePath)
			' Define a dictionary of placeholders and their replacements
			Dim replacements = New Dictionary(Of String, String) From {
				{"{Name}", "John Doe"},
				{"{Date}", DateTime.Now.ToString("MMMM d, yyyy")},
				{"{Address}", "123 Iron Street, Iron Software"},
				{"{product}", "IronWord"},
				{"{Sender}", "Sale,"},
				{"{phone}", "+123 456789"},
				{"{email}", "sale@ironsoftware.com"},
				{"{expiryDate}", DateTime.Now.AddYears(1).ToString("MMMM d, yyyy")}
			}
			' Replace placeholders with actual data
			For Each replacement In replacements
				doc.Texts.ForEach(Function(x) x.Replace(replacement.Key, replacement.Value))
			Next replacement
		' Save the filled document
		'doc.Save(outputPath);
		'Console.WriteLine("Document filled and saved successfully.");
		' Create and configure text style methods
		Dim textStyle As New TextStyle()
		textStyle.TextEffect = New TextEffect() With {
			.GlowEffect = New Glow() With {
				.GlowColor = IronWord.Models.Color.Aqua,
				.GlowRadius = 10
			}
		}
		' Add text with style or image
		doc.AddText(" IronSoftware").Style = textStyle
		' Export new Word document
		doc.SaveAs("glowEffect.docx")
	End Sub
End Class
VB   C#

說明

修訂後的程式碼展示了使用 IronWord 函式庫填寫 Word 文件範本、設計文字樣式及儲存修改後的文件。 以下是一個簡明的說明:

  1. License Setup: 設定IronWord授權金鑰以啟用功能。

  2. 檔案路徑:指定模板的路徑(Template.docx)和輸出檔案(glowEffect.docx).

  3. 創建文件實例:使用提供的模板路徑初始化 WordDocument 實例。

  4. 定義替代項:創建一個包含佔位符及其相應替代值的字典。

  5. 替換佔位符:遍歷字典,將文件中的佔位符替換為實際數據。

  6. 設定文字樣式:定義具有光暈效果的文字樣式,指定顏色和半徑。

  7. 新增樣式文字:將具有已設置樣式的文字新增至文件中。

  8. 儲存文件:將更新的文件以新名稱儲存(glowEffect.docx)反映所應用的文本樣式。

  9. 控制台輸出:前面的控制台輸出語句已被註釋掉,並且儲存操作已更新以反映新的文件名稱。

    此代碼演示了IronWord的文件自動化和自定義功能,包括文本替換和樣式設定。

    輸出

    如何使用 C# 中的 Word 範本生成 Word 文件:圖 8 - 示例 Word 輸出

IronWord 授權

IronWord. 一旦輸入資料,許可證將發送至提供的電子郵件地址。 此授權需要放置在程式碼的開頭,使用前IronWord庫,如下所示。

License.LicenseKey = "your Key Here"
License.LicenseKey = "your Key Here"
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'License.LicenseKey = "your Key Here"
VB   C#

結論

IronWord提供了使用模板生成 Word 文件的多項優勢。 它透過允許開發人員以程式化方式填寫特定資料的模板,簡化文件創建自動化,從而減少手動輸入的需求。 這提高了效率和準確性,因為減少了人為錯誤的風險。 另外,IronWord有助於保持文件的一致性,確保每個生成的檔案都遵循相同的格式和結構。 自動化重複性任務可以節省時間和資源,使其非常適合快速生成大量文檔。 IronWord提升生產力,並在需要頻繁或複雜文件生成的情況下簡化工作流程。

按照本文所述步驟並利用所提供的範例進行IronWord,您可以高效地管理文件生成需求並精簡工作流程。

下一個 >
如何在 C# 中向 Word 文件添加水印

準備開始了嗎? 版本: 2024.12 剛剛發布

免費 NuGet 下載 總下載次數: 7,878 查看許可證 >