真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#創(chuàng)建可填充Word表單

背景介紹

有時候,我們需要制作一個Word模板文檔,然后發(fā)給用戶填寫,但我們希望用戶只能在指定位置填寫內(nèi)容,其他內(nèi)容不允許編輯和修改。這時候我們就可以通過表單控件來輕松實現(xiàn)這一功能。
本文將介紹如何使用C#在Word文檔中創(chuàng)建可填充的Word表單。

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設(shè)、永清網(wǎng)絡(luò)推廣、小程序開發(fā)、永清網(wǎng)絡(luò)營銷、永清企業(yè)策劃、永清品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供永清建站搭建服務(wù),24小時服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com

使用工具

? Visual Studio
? Spire.Doc for .NET組件

在添加以下代碼前,需要下載Spire.Doc組件,并從安裝路徑下的bin文件夾中引用Spire.Doc.dll到程序中。

代碼

在Word中,表單控件主要分為兩種:

? 舊式窗體域
? 內(nèi)容控件 (Word 2010及以后版本)

下面看看如何使用Spire.Doc添加舊式窗體域和內(nèi)容控件到Word模板文檔。

添加舊式窗體域

Word 2007及以前的版本中是舊式窗體域。舊式窗體域分為:文本型窗體域、復(fù)選框型窗體域和下拉型窗體域。

下面的代碼創(chuàng)建了一個Word文檔,然后添加了一個表格,并給表格添加文本型、復(fù)選框型和下拉型窗體域,最后保護(hù)Word文檔。

{
//創(chuàng)建Document實例
Document doc = new Document();
//添加一個section
Section section = doc.AddSection();

//標(biāo)題
Paragraph title = section.AddParagraph();
TextRange titleText = title.AppendText("職位申請表");
titleText.CharacterFormat.FontName = "宋體";
titleText.CharacterFormat.FontSize = 16f;
title.Format.HorizontalAlignment = HorizontalAlignment.Center;

//添加一個7行2列的表格
Table table = section.AddTable(true);
table.ResetCells(7, 2);

//合并首行的單元格
table.ApplyHorizontalMerge(0, 0, 1);

//設(shè)置表頭
TableRow headerRow = table.Rows[0];
headerRow.IsHeader = true;
headerRow.RowFormat.BackColor = Color.FromArgb(0x00, 0x71, 0xb6);
headerRow.Cells[0].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
Paragraph headerParagraph = headerRow.Cells[0].AddParagraph();
TextRange headerText = headerParagraph.AppendText("第一部分、個人信息");
headerText.CharacterFormat.Bold = true;

//添加段落到單元格[1,0]
Paragraph paragraph = table.Rows[1].Cells[0].AddParagraph();
TextRange textRange = paragraph.AppendText("姓名");

//添加文本型窗體到單元格[1,1]
paragraph = table.Rows[1].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Name");

//添加段落到單元格[2,0]
paragraph = table.Rows[2].Cells[0].AddParagraph();
textRange = paragraph.AppendText("年齡");

//添加文本型窗體到單元格[2,1]
paragraph = table.Rows[2].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Age");

//添加段落到單元格[3,0]
paragraph = table.Rows[3].Cells[0].AddParagraph();
textRange = paragraph.AppendText("婚否");

//添加復(fù)選框型窗體到單元格[3,1]
paragraph = table.Rows[3].Cells[1].AddParagraph();
AddCheckBoxFormField(paragraph, "Married");

//添加段落到單元格[4,0]
paragraph = table.Rows[4].Cells[0].AddParagraph();
textRange = paragraph.AppendText("專業(yè)");

//添加下拉型窗體到單元格[4,1]
paragraph = table.Rows[4].Cells[1].AddParagraph();
AddDropDownFormField(paragraph, "Major");

//添加段落到單元格[5,0]
paragraph = table.Rows[5].Cells[0].AddParagraph();
textRange = paragraph.AppendText("申請職位");

//添加文本型窗體到單元格[5,1]
paragraph = table.Rows[5].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Position");

//添加段落到單元格[6,0]
paragraph = table.Rows[6].Cells[0].AddParagraph();
textRange = paragraph.AppendText("申請理由");

//添加文本型窗體到單元格[6,1]
paragraph = table.Rows[6].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Reason");

//創(chuàng)建段落樣式
ParagraphStyle style = new ParagraphStyle(doc);
style.Name = "style";
style.CharacterFormat.FontName = "宋體";
style.CharacterFormat.FontSize = 11f;
doc.Styles.Add(style);

for (int i = 0; i < table.Rows.Count; i++)
{
    //設(shè)置表格行高
    table.Rows[i].Height = 20f;
    for (int j = 0; j < table.Rows[i].Cells.Count; j++)
    {
        //設(shè)置單元格文本垂直對齊方式
        table[i, j].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
        //設(shè)置單元格的寬度,即列寬
        table[i, j].Width = 200f;
        foreach (Paragraph para in table[i, j].Paragraphs)
        {
            //應(yīng)用段落樣式
            para.ApplyStyle(style.Name);
        }
    }
}

//設(shè)置表格居中排列
table.TableFormat.HorizontalAlignment = RowAlignment.Center;

//保護(hù)文檔,并設(shè)置模式為僅允許編輯表單域
doc.Protect(ProtectionType.AllowOnlyFormFields, "123");

//保存
doc.SaveToFile("AddFormFields.docx", FileFormat.Docx2013);
}

//添加文本型窗體、復(fù)選框型窗體和下拉型窗體的方法如下:
//添加文本型窗體
static void AddTextFormField(Paragraph paragraph, string fieldName)
{
    TextFormField textForm = paragraph.AppendField(fieldName, FieldType.FieldFormTextInput) as TextFormField;           
    textForm.DefaultText = "";
    textForm.Text = "";
}

//添加復(fù)選框型窗體
static void AddCheckBoxFormField(Paragraph paragraph, string fieldName)
{
    CheckBoxFormField checkBoxForm = paragraph.AppendField(fieldName,    FieldType.FieldFormCheckBox) as CheckBoxFormField;
    checkBoxForm.SizeType = CheckBoxSizeType.Exactly;
    checkBoxForm.CheckBoxSize = 8;
}

//添加下拉型窗體
static void AddDropDownFormField(Paragraph paragraph, string fieldName) 
{
    DropDownFormField dropDownForm = paragraph.AppendField(fieldName, FieldType.FieldFormDropDown) as DropDownFormField ;
    dropDownForm.DropDownItems.Add("選擇一個專業(yè)");
    dropDownForm.DropDownItems.Add("計算機科學(xué)與技術(shù)");
    dropDownForm.DropDownItems.Add("軟件工程");
    dropDownForm.DropDownItems.Add("信息管理");
    dropDownForm.DropDownItems.Add("電子商務(wù)");
}
}
}

用戶打開下面的生成文檔,只能編輯表格中的窗體,不能修改其他內(nèi)容:
C# 創(chuàng)建可填充Word表單

添加內(nèi)容控件

Word 2010及以后的版本中添加了內(nèi)容控件。下面就介紹如何使用Spire.Doc添加內(nèi)容控件到Word文檔。

Spire.Doc支持多種內(nèi)容控件類型,可在枚舉SdtType中查看,如下圖所示:
C# 創(chuàng)建可填充Word表單

//創(chuàng)建Document實例 
Document document = new Document();
//添加一個section
Section section = document.AddSection();

//添加段落
Paragraph paragraph = section.AddParagraph();
paragraph.AppendText("姓名: ");

//添加純文本內(nèi)容控件 
StructureDocumentTagInline sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.Text;
sdt.SDTProperties.Alias = "純文本";
//設(shè)置展示文本
SdtText text = new SdtText(false);
text.IsMultiline = true;
sdt.SDTProperties.ControlProperties = text;
TextRange rt = new TextRange(document);
rt.Text = "姓名";
sdt.SDTContent.ChildObjects.Add(rt);

paragraph.AppendBreak(BreakType.LineBreak);

//添加段落
paragraph = section.AddParagraph();
paragraph.AppendText("性別: ");

//添加下拉列表內(nèi)容控件
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.DropDownList;
sdt.SDTProperties.Alias = "下拉列表";
//添加下拉選項
SdtDropDownList sddl = new SdtDropDownList();
sddl.ListItems.Add(new SdtListItem("男", "1"));
sddl.ListItems.Add(new SdtListItem("女", "2"));
sdt.SDTProperties.ControlProperties = sddl;
//設(shè)置控件展示的初始選項
rt = new TextRange(document);
rt.Text = sddl.ListItems[1].DisplayText;
sdt.SDTContent.ChildObjects.Add(rt);

paragraph.AppendBreak(BreakType.LineBreak);

//添加段落 
paragraph = section.AddParagraph();
paragraph.AppendText("出生日期: ");

//添加日期選取器內(nèi)容控件 
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.DatePicker;
sdt.SDTProperties.Alias = "日期選取器";
//設(shè)置日歷格式
SdtDate date = new SdtDate();
date.CalendarType = CalendarType.Default;
date.DateFormat = "yyyy.MM.dd";
date.FullDate = DateTime.Now;
sdt.SDTProperties.ControlProperties = date;
//設(shè)置展示日期
rt = new TextRange(document);
rt.Text = "1991.02.08";
sdt.SDTContent.ChildObjects.Add(rt);

paragraph.AppendBreak(BreakType.LineBreak);

//添加段落
paragraph = section.AddParagraph();
paragraph.AppendText("國籍: ");

//添加組合框內(nèi)容控件  
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.ComboBox;
sdt.SDTProperties.Alias = "組合框";
//添加選項
SdtComboBox cb = new SdtComboBox();
cb.ListItems.Add(new SdtListItem("中國", "1"));
cb.ListItems.Add(new SdtListItem("英國", "2"));
cb.ListItems.Add(new SdtListItem("意大利", "3"));
sdt.SDTProperties.ControlProperties = cb;
//設(shè)置展示選項
rt = new TextRange(document);
rt.Text = cb.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(rt);

paragraph.AppendBreak(BreakType.LineBreak);

//創(chuàng)建段落樣式
ParagraphStyle style = new ParagraphStyle(document);
style.Name = "style";
style.CharacterFormat.FontName = "宋?體??";
style.CharacterFormat.FontSize = 11f;
document.Styles.Add(style);

//應(yīng)用段落樣式
foreach(Paragraph para in section.Paragraphs)
{
para.ApplyStyle(style.Name);
}

//保護(hù)文檔,僅允許修改表單
document.Protect(ProtectionType.AllowOnlyFormFields, "123");

//保存          
document.SaveToFile("ContentControls.docx", FileFormat.Docx2013);

生成文檔:
C# 創(chuàng)建可填充Word表單


網(wǎng)頁題目:C#創(chuàng)建可填充Word表單
網(wǎng)站URL:http://weahome.cn/article/gcojeg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部