ASP .NET Core 導入和導出 Word 文件
使用IronWord程式庫在C#中建立可填寫的Word表單模板,通過構建基於表格的佈局和佔位符文字字段來實現。 然後,您可以通過編程方式填充它們的實際資料,並選擇性地將其轉換為PDF格式。
通過結構化的表單收集資訊對於各行業的資料收集至關重要——從人力資源部門處理工作申請到醫療服務提供者收集患者資訊。 通過編程方式建立可填寫的表單模板節省時間,並確保您的.NET應用程式中的Word文件的一致性。 本教程演示如何使用C#和IronWord建立Word文件中的可填寫表單模板,這是一種.NET Word庫,用於生成和編輯DOCX文件,無需依賴Microsoft Office。 到最後,您將擁有一個完整的工作申請表模板,準備好進行資料填充,您甚至可以將Word文件轉換為PDF格式進行分發。
什麼是Word文件中的可填寫表單模板?
可填寫表單模板是設計有指定區域的結構化Word文件,使用者可以在這些區域中輸入文字和其他資料。 這些模板使用表格和佔位符文字字段建立有組織的佈局,您可以通過編程方式或通過交互式表單手動填充實際資料。 在處理.NET應用程式時,您可以使用IronWord等程式庫,並與其他Iron Software產品(如IronPDF for PDF generation)一起使用,建立完整的文件自動化解決方案。
Microsoft Word支持多種交互字段的內容控件,包括純文字內容控件、富文字內容控件、核取方塊內容控件、下拉列表內容控件、組合框內容控件、日期選擇器內容控件和圖片內容控件。 雖然本機的表單字段建立交互式表單,但使用佔位符文字的模板方法在Web應用程式和伺服器環境中的文件生成中提供了更大的靈活性。 這種靈活性對於構建處理PDF數位簽名或其他文件型別的企業工作流程尤其有用。
常見應用包括:
- 帶有可填寫字段的工作申請和員工入職表單
- 用於資料收集的客戶註冊和反饋調查
- 帶有文字框和複選框控件的醫療採集和同意書
- 具有可變文字字段的合同模板
- 出口為PDF文件的訂購表和發票
這些表單的結構化特性使其非常適合自動化處理。 基於模板的表單生成使得應用程式能夠從單個母模板生產數十甚至數百個一致的文件,減少錯誤並消除重複的手動工作。 相同的方法可以從簡單的單區段表單擴展到具有條件邏輯、驗證規則和分支結構的多頁文件。
如何通過NuGet安裝IronWord?
要開始使用IronWord,請建立一個新的.NET控制台應用程式並安裝包。 您可以使用.NET CLI從NuGet安裝IronWord:
dotnet new console -n WordFormTemplate
cd WordFormTemplate
dotnet add package IronWord
或者,在Visual Studio中的NuGet包管理器中搜索"IronWord"來安裝。這個.NET Word庫可以在系統上未安裝Microsoft Office或Word Interop的情況下工作,適合伺服器端和雲端部署,無需Office支持。

安裝後,在進行任何API呼叫之前新增授權金鑰。 您可以從IronWord授權頁面獲取免費試用金鑰,或直接在程式碼中設置金鑰:
using IronWord;
License.LicenseKey = "YOUR-LICENSE-KEY";IRON VB CONVERTER ERROR developers@ironsoftware.com安裝和授權包後,您就可以編程構建表單模板了。
如何在C#中建立可填寫的表單模板?
如何使用表和佔位符構建表單結構?
表格為良好的組織表單佈局提供了基礎,具有適當的表格單元對齊。 文件物件用於向Word文件中新增表格和表單字段。 以下程式碼範例說明了如何使用IronWord的文件API建立具有標籤和輸入佔位符的基本表單結構:
using IronWord;
using IronWord.Models;
// Apply your license key
License.LicenseKey = "YOUR-LICENSE-KEY";
// Create a new document instance
WordDocument doc = new WordDocument();
// Create the form header
Paragraph header = new Paragraph();
var headerText = new IronWord.Models.TextContent("Job Application Form")
{
Style = new TextStyle
{
TextFont = new Font() { FontFamily = "Arial", FontSize = 24 },
IsBold = true,
Color = new Color("#1a1a1a")
}
};
header.AddText(headerText);
doc.AddParagraph(header);
// Add spacing paragraph
doc.AddParagraph(new Paragraph());
// Create a table for personal information section
Table personalInfoTable = new Table(4, 2);
// Set column labels and placeholder text fields
personalInfoTable.Rows[0].Cells[0].AddParagraph(new Paragraph(new IronWord.Models.TextContent("Full Name:")));
personalInfoTable.Rows[0].Cells[1].AddParagraph(new Paragraph(new IronWord.Models.TextContent("{FullName}")));
personalInfoTable.Rows[1].Cells[0].AddParagraph(new Paragraph(new IronWord.Models.TextContent("Email Address:")));
personalInfoTable.Rows[1].Cells[1].AddParagraph(new Paragraph(new IronWord.Models.TextContent("{Email}")));
personalInfoTable.Rows[2].Cells[0].AddParagraph(new Paragraph(new IronWord.Models.TextContent("Phone Number:")));
personalInfoTable.Rows[2].Cells[1].AddParagraph(new Paragraph(new IronWord.Models.TextContent("{Phone}")));
personalInfoTable.Rows[3].Cells[0].AddParagraph(new Paragraph(new IronWord.Models.TextContent("Date of Application:")));
personalInfoTable.Rows[3].Cells[1].AddParagraph(new Paragraph(new IronWord.Models.TextContent("{ApplicationDate}")));
doc.AddTable(personalInfoTable);
// Save the template to a file with descriptive name
doc.SaveAs("JobApplicationTemplate.docx");
Console.WriteLine("Form template created successfully!");Imports IronWord
Imports IronWord.Models
' Apply your license key
License.LicenseKey = "YOUR-LICENSE-KEY"
' Create a new document instance
Dim doc As New WordDocument()
' Create the form header
Dim header As New Paragraph()
Dim headerText = New IronWord.Models.TextContent("Job Application Form") With {
.Style = New TextStyle With {
.TextFont = New Font() With {.FontFamily = "Arial", .FontSize = 24},
.IsBold = True,
.Color = New Color("#1a1a1a")
}
}
header.AddText(headerText)
doc.AddParagraph(header)
' Add spacing paragraph
doc.AddParagraph(New Paragraph())
' Create a table for personal information section
Dim personalInfoTable As New Table(4, 2)
' Set column labels and placeholder text fields
personalInfoTable.Rows(0).Cells(0).AddParagraph(New Paragraph(New IronWord.Models.TextContent("Full Name:")))
personalInfoTable.Rows(0).Cells(1).AddParagraph(New Paragraph(New IronWord.Models.TextContent("{FullName}")))
personalInfoTable.Rows(1).Cells(0).AddParagraph(New Paragraph(New IronWord.Models.TextContent("Email Address:")))
personalInfoTable.Rows(1).Cells(1).AddParagraph(New Paragraph(New IronWord.Models.TextContent("{Email}")))
personalInfoTable.Rows(2).Cells(0).AddParagraph(New Paragraph(New IronWord.Models.TextContent("Phone Number:")))
personalInfoTable.Rows(2).Cells(1).AddParagraph(New Paragraph(New IronWord.Models.TextContent("{Phone}")))
personalInfoTable.Rows(3).Cells(0).AddParagraph(New Paragraph(New IronWord.Models.TextContent("Date of Application:")))
personalInfoTable.Rows(3).Cells(1).AddParagraph(New Paragraph(New IronWord.Models.TextContent("{ApplicationDate}")))
doc.AddTable(personalInfoTable)
' Save the template to a file with descriptive name
doc.SaveAs("JobApplicationTemplate.docx")
Console.WriteLine("Form template created successfully!")此程式碼使用WordDocument類建立一個新的文件實例,並使用Table類構建一個結構化的表單。 每行包含第一個單元格中的標籤和第二個單元格中的佔位符(用大括號括起)。 TextStyle則應用格式。 佔位符語法{FieldName}標記了您稍後將用實際資料替換文字的區域。 有關包括邊框、陰影和列寬在內的高級格式選項,請參閱IronWord說明文件。


多區段表單的最佳實踐是什麼?
以下程式碼範例展示了建立帶有多個區段的完整工作申請表。 助手方法減少了重複並使模板易於擴展具有其他區段,如工作歷史或參考。
using IronWord;
using IronWord.Models;
License.LicenseKey = "YOUR-LICENSE-KEY";
// Create an empty document to start fresh
WordDocument doc = new WordDocument();
// Document title with rich text styling
Paragraph title = new Paragraph();
TextContent titleText = new TextContent("Employment Application Form");
titleText.Style = new TextStyle()
{
TextFont = new Font() { FontFamily = "Arial", FontSize = 28 },
IsBold = true
};
// Center the paragraph
title.Alignment = IronWord.Models.Enums.TextAlignment.Center;
title.AddText(titleText);
doc.AddParagraph(title);
doc.AddParagraph(new Paragraph());
// Section 1: Personal Information with text box style fields
AddSectionHeader(doc, "Personal Information");
Table personalTable = new Table(5, 2);
SetFormRow(personalTable, 0, "Full Name:", "{FullName}");
SetFormRow(personalTable, 1, "Email:", "{Email}");
SetFormRow(personalTable, 2, "Phone:", "{Phone}");
SetFormRow(personalTable, 3, "Address:", "{Address}");
SetFormRow(personalTable, 4, "Date of Birth:", "{DOB}");
doc.AddTable(personalTable);
doc.AddParagraph(new Paragraph());
// Section 2: Position Details
AddSectionHeader(doc, "Position Details");
Table positionTable = new Table(3, 2);
SetFormRow(positionTable, 0, "Position Applied For:", "{Position}");
SetFormRow(positionTable, 1, "Available Start Date:", "{StartDate}");
SetFormRow(positionTable, 2, "Desired Salary:", "{Salary}");
doc.AddTable(positionTable);
doc.AddParagraph(new Paragraph());
// Section 3: Education Background
AddSectionHeader(doc, "Education Background");
Table educationTable = new Table(3, 2);
SetFormRow(educationTable, 0, "高est Degree:", "{Degree}");
SetFormRow(educationTable, 1, "Institution:", "{Institution}");
SetFormRow(educationTable, 2, "Graduation Year:", "{GradYear}");
doc.AddTable(educationTable);
doc.AddParagraph(new Paragraph());
// Section 4: Declaration - certification statement
Paragraph declaration = new Paragraph();
declaration.AddText(new TextContent("Applicant certifies that the information provided is accurate and complete."));
doc.AddParagraph(declaration);
doc.AddParagraph(new Paragraph());
Table signatureTable = new Table(1, 2);
SetFormRow(signatureTable, 0, "Signature:", "{Signature}");
doc.AddTable(signatureTable);
// Save template file
doc.SaveAs("CompleteJobApplication.docx");
Console.WriteLine("Complete job application form created!");
// Helper method to add styled section headers
void AddSectionHeader(WordDocument document, string headerText)
{
Paragraph sectionHeader = new Paragraph();
TextContent sectionText = new TextContent(headerText);
sectionText.Style = new TextStyle()
{
TextFont = new Font() { FontFamily = "Arial", FontSize = 14 },
IsBold = true,
Color = new Color("#333333")
};
sectionHeader.AddText(sectionText);
document.AddParagraph(sectionHeader);
}
// Helper method to populate table cells with label and placeholder
void SetFormRow(Table table, int rowIndex, string label, string placeholder)
{
table.Rows[rowIndex].Cells[0].AddParagraph(new Paragraph(new TextContent(label)));
table.Rows[rowIndex].Cells[1].AddParagraph(new Paragraph(new TextContent(placeholder)));
}
此程式碼建立了組織成邏輯部分的多部分表單模板。 助手方法SetFormRow減少了程式碼重複。 Table構造函式接受行和列參數,而Cells集合提供對各個表單元格的存取。 每個區段包含一個樣式化的標頭,後跟帶有可填寫字段的表格。 這種模塊化的方法使其成為根據需求變化容易新增日期選擇器字段、下拉列表選項或複選框區段。 您還可以使用圖片控件嵌入圖像,使用日期控件新增日期選擇器字段。 有關在IronWord中處理段落的更多資訊,請查閱使用指南。

如何填充表單模板?
什麼是文字替換方法?
一旦您的模板存在,使用文字替換來填充實際資料非常簡單。 以下程式碼片段演示了通過載入模板文件並迭代所有文字元素來填充表單,填入範例申請者資訊:
using IronWord;
License.LicenseKey = "YOUR-LICENSE-KEY";
// Load the template document
WordDocument doc = new WordDocument("CompleteJobApplication.docx");
// Define replacement data - example using John Doe as applicant
var applicantData = new Dictionary<string, string>
{
{ "{FullName}", "John Doe" },
{ "{Email}", "john.doe@email.com" },
{ "{Phone}", "(555) 123-4567" },
{ "{Address}", "123 Main Street, Chicago, IL 60601" },
{ "{DOB}", "March 15, 1992" },
{ "{Position}", "Senior Software Developer" },
{ "{StartDate}", "January 15, 2025" },
{ "{Salary}", "$95,000" },
{ "{Degree}", "Bachelor of Science in Computer Science" },
{ "{Institution}", "University of Illinois" },
{ "{GradYear}", "2014" },
{ "{Signature}", "John Doe" }
};
// Replace all placeholders with actual values
foreach (var field in applicantData)
{
doc.Texts.ForEach(text => text.Replace(field.Key, field.Value));
}
// Save the filled form to a new file
doc.SaveAs("JohnDoe_Application.docx");
Console.WriteLine("Application form filled successfully!");Imports IronWord
License.LicenseKey = "YOUR-LICENSE-KEY"
' Load the template document
Dim doc As New WordDocument("CompleteJobApplication.docx")
' Define replacement data - example using John Doe as applicant
Dim applicantData As New Dictionary(Of String, String) From {
{"{FullName}", "John Doe"},
{"{Email}", "john.doe@email.com"},
{"{Phone}", "(555) 123-4567"},
{"{Address}", "123 Main Street, Chicago, IL 60601"},
{"{DOB}", "March 15, 1992"},
{"{Position}", "Senior Software Developer"},
{"{StartDate}", "January 15, 2025"},
{"{Salary}", "$95,000"},
{"{Degree}", "Bachelor of Science in Computer Science"},
{"{Institution}", "University of Illinois"},
{"{GradYear}", "2014"},
{"{Signature}", "John Doe"}
}
' Replace all placeholders with actual values
For Each field In applicantData
doc.Texts.ForEach(Sub(text) text.Replace(field.Key, field.Value))
Next
' Save the filled form to a new file
doc.SaveAs("JohnDoe_Application.docx")
Console.WriteLine("Application form filled successfully!")文字元素上的Replace方法可將佔位符標記替換為實際值。 使用字典可保持資料的組織性,並使從資料庫、API或Web應用程式中的使用者輸入中填充表單變得簡單。 ForEach遍歷每一個文字元素以執行替換。 此模式非常適合從單個模板生成多個個性化文件——例如一次為多名候選人生成錄取通知書等批量處理場景。

如何保護已填寫的表單?
填寫表單後,您可以通過對Word文件應用保護來提高文件的安全性。 這涉及設置具有只讀限制和密碼要求的保護,確保只有授權使用者才能修改內容。 當處理個人識別號碼、財務詳細資訊或醫療記錄等敏感資料時,安全考慮至關重要。 考慮實施額外的安全層,如靜態和傳輸中的資料加密、表單存取的日志審核以及對不同使用者型別的基於角色的許可。
對於需要可驗證審核線的文件,考慮將已完成的Word表單轉換為PDF並使用PDF數位簽名,使用IronPDF。 這種組合——用於創作的Word,用於分發的PDF——是一種金融和醫療等行業常見的模式。
如何將可填寫的Word表單轉換為PDF?
將可填寫的Word表單轉換為PDF是使您的表單普遍可存取並易於共享的重要步驟。 使用IronWord等.NET Word庫,您可以高效地將包含表單字段的Word文件轉換為PDF文件。 此過程涉及裝載您的Word文件,存取其表單字段,並使用程式庫的轉換方法生成一個保留所有內容的PDF文件。
生成的PDF文件保留表單內容,允許使用者使用任何標準的PDF查看器查看——無需Microsoft Word或專門的軟體。 這對於需要廣泛分發表單的組織特別有用,確保不同平台和裝置的相容性。 通過使用.NET Word庫的轉換功能,您可以在Word中建立專業表單,並轉換為PDF以作最終分發,簡化您的工作流程,並提高可存取性。
選擇PDF轉換方法時,請考慮下表中列出的因素:
| 方法 | 需要Office | 伺服器端安全 | 保真度 |
|---|---|---|---|
| Microsoft Office互操作 | 是的 | 不 | 高 |
| IronWord + IronPDF | 不 | 是的 | 高 |
| LibreOffice頭部 | 不 | 是的(Linux) | 中 |
| Aspose.Words | 不 | 是的 | 高 |
對於需要多種文件型別的企業部署,請查看IronWord授權選項,並考慮對整個文件處理堆棧的全套許可。
如何分發可填寫的PDF?
一旦您建立了可填寫的PDF,向使用者分發它非常簡單且極具靈活性。 您可以通過電子郵件共享可填PDF,在Web應用程式中嵌入它們,或將其上傳到雲儲存服務如Dropbox或Google Drive。這允許使用者輕鬆下載PDF,使用例如Adobe Acrobat Reader的PDF查看器完成表單,並將填寫完成的文件電子回傳。
這一數位分發過程不僅加快了資料收集,還消除了實體文書工作的需要,非常適合遠程團隊和線上工作流程。 無論您是在收集工作申請、客戶反饋或註冊詳細資訊,分發可填PDF確保了對您組織和受訪者來說順利、高效且無紙化的體驗。
考慮實施自動化工作流程,通知接收者表單可用,跟踪完成狀態,並發送提交補充的提醒。 與電子郵件行銷平台整合可以在保持個性化的同時簡化大規模分發,透過合併字段。 有關設計有效數位表單的背景,W3C Web表單指南和Microsoft的DOCX Open XML規範都提供有益的標準合規背景。
如何實現高級表單功能?
為進一步優化您的可填寫表單,考慮新增高級功能,如邏輯和驗證。 邏輯允許您建立對使用者輸入有動態反應的交互式表單。 例如,您可以根據先前的答案顯示或隱藏區段或僅在滿足特定條件時啟用某些字段。 驗證確保使用者輸入的資料符合您的要求,例如強制正確的日期格式、必填字段或有效的電子郵件地址。
許多.NET Word庫支持通過程式碼建立這些高級功能,讓您能夠構建指導使用者並減少錯誤的複雜表單。 通過將邏輯和驗證整合到您的Word文件模板中,您可以建立不僅收集資料而且提高收到的資訊的質量和一致性的交互表單。 高級實現可能包括:
- 自動計算總數或應用公式的計算字段
- 突出顯示所需字段或錯誤的條件格式
- 提供動態字段標籤和指導的多語言支持
- 與外部資料源整合以進行即時驗證
- 使用正則表達式或業務邏輯的自定義驗證規則
- 顯示表單完成百分比的進度指示器
對於複雜的表單場景,考慮實施一個表單構建器介面,允許非技術使用者建立和修改模板而無需編碼。 這種方法在大型組織中使靈活的表單管理成為可能,讓業務團隊維護自己的模板,而開發者專注於資料流程。IronWord範例頁面提供了用於構建高級模板時有用的文字樣式、表格邊框和文件屬性的其他技術。
構建驗證邏輯時,遵循.NET中輸入驗證的既定模式,保持程式碼可維護和可測試。 Microsoft文件OOXML文件結構也是了解IronWord生成的底層格式的寶貴參考。
您的下一步是什麼?
使用IronWord在C#中建立可填寫的表單模板簡化了您的.NET應用程式的文件生成工作流程。 基於表格的佈局方法生成專業且結構化的表單,具有適當對齊的表格單元,同時模板替換模式讓任何來源的資料填充高效進行。 隨著您的文件自動化需求的增長,探索IronWord使用指南中的主題,包括郵件合併、頁眉和頁腳自定義以及多語言文件生成。
開始您的免費試用來探索IronWord的全部功能,或購買授權以用於生產部署。 對於關於實現的問題,請通過IronWord支持頁面聯繫工程團隊。 查看IronWord API參考,獲取詳細的類文件和展示複雜表單場景、多文件處理和企業規模實現的高級範例。

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
相關文章
