结构化文档
结构化文档是这样一种文档,即可以控制内容在文档的何处显示,文档中可以显示的内容类型以及能否编辑此内容。
使用内容控件来构建文档
内容控件是Microsoft Word文档中的实体,充当特定内容的容器。单个内容控件可以包含格式化文本、日期、列表或段落等内容。内容控件帮助您创建丰富、结构化的内容基块,并旨在用于将明确定义的基块插入文档的模板中,从而创建结构化文档。
本文将以下拉列表内容控件为例,详细介绍如何使用Spire.Doc在Word文档中创建下拉框。通过类似方法,我们可以创建文本控件、图片控件、组合框控件和日期选取器控件。
创建下拉框控件
C#
//创建文档
Document document = new Document();
//添加section
Section section = document.AddSection();
//添加段落
Paragraph paragraph = section.AddParagraph();
//添加下拉列表内容控件
StructureDocumentTagInline sdt = new StructureDocumentTagInline(document);
sdt.SDTProperties.SDTType = SdtType.DropDownList;
sdt.SDTProperties.Alias = "下拉框";
sdt.SDTProperties.Tag = "下拉框";
paragraph.ChildObjects.Add(sdt);
SdtDropDownList sddl = new SdtDropDownList();
sddl.ListItems.Add(new SdtListItem("中国", "1"));
sddl.ListItems.Add(new SdtListItem("德国", "2"));
sddl.ListItems.Add(new SdtListItem("英国", "3"));
sddl.ListItems.Add(new SdtListItem("美国", "4"));
sdt.SDTProperties.ControlProperties = sddl;
TextRange rt = new TextRange(document);
rt.Text = sddl.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(rt);
//保存文档
document.SaveToFile("下拉框控件", FileFormat.Docx2013);
VB.NET
Dim document As Document = New Document
Dim section As Section = document.AddSection
Dim paragraph As Paragraph = section.AddParagraph
Dim sdt As StructureDocumentTagInline = New StructureDocumentTagInline(document)
sdt.SDTProperties.SDTType = SdtType.DropDownList
sdt.SDTProperties.Alias = "
下拉框"
sdt.SDTProperties.Tag = "
下拉框"
paragraph.ChildObjects.Add(sdt)
Dim sddl As SdtDropDownList = New SdtDropDownList
sddl.ListItems.Add(New SdtListItem("中国", "1"))
sddl.ListItems.Add(New SdtListItem("德国", "2"))
sddl.ListItems.Add(New SdtListItem("英国", "3"))
sddl.ListItems.Add(New SdtListItem("美国", "4"))
sdt.SDTProperties.ControlProperties = sddl
Dim rt As TextRange = New TextRange(document)
rt.Text = sddl.ListItems(0).DisplayText
sdt.SDTContent.ChildObjects.Add(rt)
document.SaveToFile("
下拉框控件.docx", FileFormat.Docx2013)
创建文本控件、图片控件、日期选取器控件等
C#
//创建文档
Document document = new Document();
//添加section
Section section = document.AddSection();
//添加段落
Paragraph paragraph = section.AddParagraph();
//添加文本内容控件
StructureDocumentTagInline sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.Text;
sdt.SDTProperties.Alias = "纯文本";
sdt.SDTProperties.Tag = "纯文本";
SdtText text = new SdtText(true);
text.IsMultiline = true;
sdt.SDTProperties.ControlProperties = text;
TextRange tr = new TextRange(document);
tr.Text = "请输入纯文本。_";
Spire.Doc.Formatting.CharacterFormat format = new Spire.Doc.Formatting.CharacterFormat(document);
format.FontName = "宋体";
tr.ApplyCharacterFormat(format);
sdt.SDTContent.ChildObjects.Add(tr);
paragraph = section.AddParagraph();
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.RichText;
sdt.SDTProperties.Alias = "格式文本";
sdt.SDTProperties.Tag = "格式文本";
SdtText richText = new SdtText(true);
richText.IsMultiline = true;
sdt.SDTProperties.ControlProperties = richText;
tr = new TextRange(document);
tr.Text = "可以输入表格,图片,格式化的文本到这里。_";
tr.ApplyCharacterFormat(format);
sdt.SDTContent.ChildObjects.Add(tr);
//添加组合框内容控件
paragraph = section.AddParagraph();
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.ComboBox;
sdt.SDTProperties.Alias = "组合框";
sdt.SDTProperties.Tag = "组合框";
SdtComboBox cb = new SdtComboBox();
cb.ListItems.Add(new SdtListItem("U.K."));
cb.ListItems.Add(new SdtListItem("Japan"));
cb.ListItems.Add(new SdtListItem("Italy"));
sdt.SDTProperties.ControlProperties = cb;
tr = new TextRange(document);
tr.Text = cb.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(tr);
//添加图片内容控件
paragraph = section.AddParagraph();
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.Picture;
sdt.SDTProperties.Alias = "图片";
sdt.SDTProperties.Tag = "图片";
DocPicture pic = new DocPicture(document);
pic.LoadImage(Image.FromFile("logo.png"));
sdt.SDTContent.ChildObjects.Add(pic);
//添加日期选取器控件
paragraph = section.AddParagraph();
sdt = new StructureDocumentTagInline(document);
paragraph.ChildObjects.Add(sdt);
sdt.SDTProperties.SDTType = SdtType.DatePicker;
sdt.SDTProperties.Alias = "日期选取器";
sdt.SDTProperties.Tag = "日期选取器";
SdtDate date = new SdtDate();
date.CalendarType = CalendarType.Default;
date.DateFormat = "yyyy.MM.dd";
sdttr = new TextRange(document);
tr.Text = "2017.02.08";
sdt.SDTContent.ChildObjects.Add(tr);
//保存文档
document.SaveToFile("更多内容控件.docx", FileFormat.Docx2013);
VB.NET
Dim document As Document = New Document
Dim section As Section = document.AddSection
Dim paragraph As Paragraph = section.AddParagraph
Dim sdt As StructureDocumentTagInline = New StructureDocumentTagInline(document)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.Text
sdt.SDTProperties.Alias = "纯文本"
sdt.SDTProperties.Tag = "纯文本"
Dim text As SdtText = New SdtText(false)
text.IsMultiline = true
sdt.SDTProperties.ControlProperties = text
Dim tr As TextRange = New TextRange(document)
tr.Text = "请输入纯文本。"
Dim format As Spire.Doc.Formatting.CharacterFormat = New Spire.Doc.Formatting.CharacterFormat(document)
format.FontName = "宋体"
tr.ApplyCharacterFormat(format)
sdt.SDTContent.ChildObjects.Add(tr)
paragraph = section.AddParagraph
sdt = New StructureDocumentTagInline(document)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.RichText
sdt.SDTProperties.Alias = "格式文本"
sdt.SDTProperties.Tag = "格式文本"
Dim richText As SdtText = New SdtText(true)
richText.IsMultiline = true
sdt.SDTProperties.ControlProperties = richText
tr = New TextRange(document)
tr.Text = "可以输入表格,图片,格式化的文本到这里。"
tr.ApplyCharacterFormat(format)
sdt.SDTContent.ChildObjects.Add(tr)
paragraph = section.AddParagraph
sdt = New StructureDocumentTagInline(document)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.ComboBox
sdt.SDTProperties.Alias = "组合框"
sdt.SDTProperties.Tag = "组合框"
Dim cb As SdtComboBox = New SdtComboBox
cb.ListItems.Add(New SdtListItem("U.K."))
cb.ListItems.Add(New SdtListItem("Japan"))
cb.ListItems.Add(New SdtListItem("Italy"))
sdt.SDTProperties.ControlProperties = cb
tr = New TextRange(document)
tr.Text = cb.ListItems(0).DisplayText
sdt.SDTContent.ChildObjects.Add(tr)
paragraph = section.AddParagraph
sdt = New StructureDocumentTagInline(document)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.Picture
sdt.SDTProperties.Alias = "图片"
sdt.SDTProperties.Tag = "图片"
Dim pic As DocPicture = New DocPicture(document)
pic.LoadImage(Image.FromFile("logo.png"))
sdt.SDTContent.ChildObjects.Add(pic)
paragraph = section.AddParagraph
sdt = New StructureDocumentTagInline(document)
paragraph.ChildObjects.Add(sdt)
sdt.SDTProperties.SDTType = SdtType.DatePicker
sdt.SDTProperties.Alias = "日期选取器"
sdt.SDTProperties.Tag = "日期选取器"
Dim date As SdtDate = New SdtDate
date.CalendarType = CalendarType.Default
date.DateFormat = "yyyy.MM.dd"
sdt.SDTProperties.ControlProperties = date
tr = New TextRange(document)
tr.Text = "2017.02.08"
sdt.SDTContent.ChildObjects.Add(tr)
document.SaveToFile("更多内容控件.docx", FileFormat.Docx2013)