生成内容控件和读取内容控件代码差不多,读取是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); } }
其他部分代码很简单,就不写了。
全文完。