有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案