转载

Java 给Word文档添加内容控件

内容控件在Word文档中充当着特定内容的容器,不同的内容控件可以指定不同的内容类型(例如日期、图片或文本等)以及能否编辑此内容。根据内容类型不同具体可分为:组合框内容控件、复选框内容控件、文本内容控件、图片内容控件、日期选取器内容控件、下拉列表内容控件等。本文就将通过使用Java程序来演示如何给Word文档添加以上六种内容控件类型。

使用工具: Free Spire.Doc for Java (免费版)

Jar文件获取及导入:

方法1:通过 官网 下载获取jar包。解压后将lib文件夹下的Spire.Doc.jar文件导入Java程序。(如下图)

Java 给Word文档添加内容控件

方法2:通过maven仓库安装导入。具体安装教程参见 此网页 。

代码示例

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);
    }
}

添加效果:

Java 给Word文档添加内容控件

(本文完)

原文  https://segmentfault.com/a/1190000022472111
正文到此结束
Loading...