生成内容控件和读取内容控件代码差不多,读取是get,生成是addNew。往段落和表格外插入内容控件没有实现,部分关键代码如下:
public void setCTSdtPr(CTSdtPr sdtPr, String id, String alias, String tag,
CTRPr rprStyle, boolean isText, boolean isTextMutil,
boolean notDel, boolean notEdit, boolean isDelAfterEdit) {
if (isText) {
// 纯文本
CTSdtText sdtText = sdtPr.addNewText();
// 允许多行
if (isTextMutil) {
sdtText.setMultiLine(STOnOff.TRUE);
}
}
// 设置id
if (StringUtils.isNumeric(id)) {
CTDecimalNumber sdtId = sdtPr.addNewId();
sdtId.setVal(new BigInteger(id));
}
// 设置标题
if (StringUtils.isNotBlank(alias)) {
CTString ctAlia = sdtPr.addNewAlias();
ctAlia.setVal(alias);
}
// 设置标记
if (StringUtils.isNotBlank(tag)) {
CTString ctTag = sdtPr.addNewTag();
ctTag.setVal(tag);
}
// 无法删除内容控件,无法编辑内容
if (notDel && notEdit) {
CTLock ctLock = sdtPr.addNewLock();
ctLock.setVal(STLock.SDT_CONTENT_LOCKED);
} else if (notDel) {
// 无法删除
CTLock ctLock = sdtPr.addNewLock();
ctLock.setVal(STLock.SDT_LOCKED);
} else if (notEdit) {
// 无法编辑
CTLock ctLock = sdtPr.addNewLock();
ctLock.setVal(STLock.CONTENT_LOCKED);
}
// 替换后是否删除内容控件
if (!notDel && isDelAfterEdit) {
CTOnOff ctTmp = sdtPr.addNewTemporary();
ctTmp.setVal(STOnOff.TRUE);
}
if (rprStyle != null) {
sdtPr.getRPrList().add(rprStyle);
}
}
其他部分代码很简单,就不写了。
全文完。