内容控件在Word文档中充当着特定内容的容器,不同的内容控件可以指定不同的内容类型(例如日期、图片或文本等)以及能否编辑此内容。根据内容类型不同具体可分为:组合框内容控件、复选框内容控件、文本内容控件、图片内容控件、日期选取器内容控件、下拉列表内容控件等。本文就将通过使用Java程序来演示如何给Word文档添加以上六种内容控件类型。
使用工具:Free Spire.Doc for Java(免费版)
Jar文件获取及导入:
方法1:通过E-iceblue中文官网下载获取jar包。解压后将lib文件夹下的Spire.Doc.jar文件导入Java程序。(如下图)
方法2:通过maven仓库安装导入。具体安装教程参见E-iceblue中文官网。
代码示例
import com.spire.doc.*;
import com.spire.doc.documents.*;
import com.spire.doc.fields.*;
import java.util.Date;
public class ContentControls {
public static void main(String[] args) {
//创建一个新的Word文档
Document document = new Document();
//添加一个section到文档
Section section = document.addSection();
//添加一个段落到section
Paragraph paragraph = section.addParagraph();
//添加组合框内容控件
paragraph = section.addParagraph();
StructureDocumentTagInline sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setSDTType(SdtType.Combo_Box);
//为控件设置标题和标签
sd.getSDTProperties().setAlias("组合框");
sd.getSDTProperties().setTag("组合框");
//添加选项
SdtComboBox cb = new SdtComboBox();
cb.getListItems().add(new SdtListItem("中国 1"));
cb.getListItems().add(new SdtListItem("意大利 2"));
cb.getListItems().add(new SdtListItem("日本 3"));
sd.getSDTProperties().setControlProperties(cb);
//添加显示文本
TextRange rt = new TextRange(document);
rt.setText(cb.getListItems().get(2).getDisplayText());
sd.getSDTContent().getChildObjects().add(rt);
section.addParagraph();
//添加复选框内容控件
paragraph = section.addParagraph();
sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setSDTType(SdtType.Check_Box);
//为控件设置标题和标签
sd.getSDTProperties().setAlias("复选框");
sd.getSDTProperties().setTag("复选框");
SdtCheckBox scb = new SdtCheckBox();
sd.getSDTProperties().setControlProperties(scb);
rt = new TextRange(document);
sd.getChildObjects().add(rt);
scb.setChecked(true);
section.addParagraph();
//添加文本内容控件
paragraph = section.addParagraph();
sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setSDTType(SdtType.Text);
//为控件设置标题和标签
sd.getSDTProperties().setAlias("文本");
sd.getSDTProperties().setTag("文本");
//设置显示文本
SdtText text = new SdtText(true);
text.isMultiline(true);
sd.getSDTProperties().setControlProperties(text);
rt = new TextRange(document);
rt.setText("此处只能输入文本");
sd.getSDTContent().getChildObjects().add(rt);
section.addParagraph();
//添加图片内容控件
paragraph = section.addParagraph();
sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setControlProperties(new SdtPicture());
//为控件设置标题和标签
sd.getSDTProperties().setAlias("图片");
sd.getSDTProperties().setTag("图片");
//添加图片
DocPicture pic = new DocPicture(document);
pic.setWidth(10f);
pic.setHeight(10f);
pic.loadImage("C:\\Users\\Test1\\Desktop\\logo.png");
sd.getSDTContent().getChildObjects().add(pic);
section.addParagraph();
//添加日期选取器内容控件
paragraph = section.addParagraph();
sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setSDTType(SdtType.Date_Picker);
//为控件设置标题和标签
sd.getSDTProperties().setAlias("日期");
sd.getSDTProperties().setTag("日期");
//设置日历模式
SdtDate date = new SdtDate();
date.setCalendarType(CalendarType.Default);
date.setDateFormat("yyyy.MM.dd");
date.setFullDate(new Date());
sd.getSDTProperties().setControlProperties(date);
//设置显示日期
rt = new TextRange(document);
rt.setText("2020.04.24");
sd.getSDTContent().getChildObjects().add(rt);
section.addParagraph();
//添加下拉列表内容控件
paragraph = section.addParagraph();
sd = new StructureDocumentTagInline(document);
paragraph.getChildObjects().add(sd);
sd.getSDTProperties().setSDTType(SdtType.Drop_Down_List);
//为控件设置标题和标签
sd.getSDTProperties().setAlias("下拉列表");
sd.getSDTProperties().setTag("下拉列表");
//添加下拉选项
SdtDropDownList sddl = new SdtDropDownList();
sddl.getListItems().add(new SdtListItem("男 1"));
sddl.getListItems().add(new SdtListItem("女 2"));
sd.getSDTProperties().setControlProperties(sddl);
//设置控件显示的初始选项
rt = new TextRange(document);
rt.setText(sddl.getListItems().get(0).getDisplayText());
sd.getSDTContent().getChildObjects().add(rt);
//保存文档
document.saveToFile("output/addContentControls.docx", FileFormat.Docx_2013);
}
}
添加效果:
(本文完)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。