java如何通过ApachePOI在word文档中添加复选框
我正在通过ApachePOI创建word文档。我想在word文档中添加一个复选框,但我没有成功。我试过这个密码
run3.getCTR().getFldCharArray(0).addNewFfData().addNewCheckBox();
但它给了我这个错误
Exception in thread "main" java.lang.IndexOutOfBoundsException
at org.openxmlformats.schemas.wordprocessingml.x2006.main.impl.CTRImpl.getFldCharArray(Unknown Source)
at createSoluminaForm.main(createSoluminaForm.java:45)
有人以前做过吗
更新
我用下面的方法解决了这个问题
static void insertFormField(XWPFParagraph paragraph, String type, CTOnOff onOff) {
XWPFRun run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.BEGIN);
if ("FORMTEXT".equals(type)) {
run.getCTR().getFldCharArray(0).addNewFfData().addNewTextInput();
}
else if ("FORMCHECKBOX".equals(type)) {
CTFFCheckBox checkbox = run.getCTR().getFldCharArray(0).addNewFfData().addNewCheckBox();
checkbox.setChecked(onOff);
}
run = paragraph.createRun();
run.getCTR().addNewInstrText().setStringValue(type);
if ("FORMTEXT".equals(type)) {
run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);
for (int i = 0; i < 5; i++) {
run = paragraph.createRun();
//run.setText(" "); // Unicode Character 'EN SPACE' (U+2002)
run.setText("\u2002");
}
}
run = paragraph.createRun();
run.getCTR().addNewFldChar().setFldCharType(STFldCharType.END);
}
方法的使用
//CheckBox checked
CTOnOff onOff = CTOnOff.Factory.newInstance();
onOff.setVal(STOnOff.ON);
//CheckBox unchecked
CTOnOff onOff1 = CTOnOff.Factory.newInstance();
onOff1.setVal(STOnOff.OFF);
//checkboxs must controlled if-else block
insertFormField(parag2, "FORMCHECKBOX", onOff);
共 (0) 个答案