Java Créer un formulaire à remplir dans Word

2023-11-06 09:37:33 zaki zou

Installer avec Maven

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.doc</artifactId>
    <version>12.2.2</version>
</dependency>
    

Word vous permet de créer des formulaires que d'autres personnes peuvent utiliser pour saisir des informations. Les formulaires à remplir sont utilisés à diverses fins. Les ressources humaines utilisent des formulaires pour collecter des informations sur les employés et les consultants. Les services marketing utilisent des formulaires pour enquêter sur la satisfaction des clients à l'égard de leurs produits et services. Les organisations utilisent des formulaires pour inscrire des membres, des étudiants ou des clients. Certains des outils que vous utiliserez lors de la création d'un formulaire incluent :

  • Contrôles de contenu:zones dans lesquelles les utilisateurs saisissent des informations dans un formulaire.
  • Tableaux: les tableaux sont utilisés dans les formulaires pour aligner le texte et les champs de formulaire, ainsi que pour créer des bordures et des cadres.
  • Protection: permet aux utilisateurs de remplir les champs mais pas d'apporter des modifications au reste du document.

Les contrôles de contenu dans Word sont des conteneurs de contenu qui permettent aux utilisateurs de créer des documents structurés. Un document structuré contrôle l'endroit où le contenu apparaît dans le document. Il existe essentiellement dix types de contrôles de contenu disponibles dans Word 2013. Cet article explique comment créer un formulaire à remplir dans Word composé des sept contrôles de contenu courants suivants utilisant Spire.Doc for Java.

Contrôle du contenu Description
Texte brut Un champ de texte limité au texte brut, donc aucun formatage ne peut être inclus.
Texte riche Champ de texte pouvant contenir du texte formaté ou d'autres éléments, tels que des tableaux, des images ou d'autres contrôles de contenu.
Image Accepte une seule image.
La liste déroulante Une liste déroulante affiche une liste prédéfinie d'éléments parmi lesquels l'utilisateur peut choisir.
Boîte combo Une zone de liste déroulante permet aux utilisateurs de sélectionner une valeur prédéfinie dans une liste ou de saisir leur propre valeur dans la zone de texte du contrôle.
Case à cocher Une case à cocher fournit un widget graphique qui permet à l'utilisateur de faire un choix binaire : oui (coché) ou non (non coché).
Sélecteur de date Contient un contrôle de calendrier à partir duquel l'utilisateur peut sélectionner une date.

Installer Spire.Doc for Java

Tout d'abord, vous devez ajouter le fichier Spire.Doc.jar en tant que dépendance dans votre programme Java. Le fichier JAR peut être téléchargé à partir de ce lien.Si vous utilisez Maven, vous pouvez facilement importer le fichier JAR dans votre application en ajoutant le code suivant au fichier pom.xml de votre projet.

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.1.0</version>
    </dependency>
</dependencies>

Créer un formulaire à remplir dans Word en Java

La classe StructureDocumentTagInline fournie par Spire.Doc pour Java est utilisée pour créer des balises de document structuré pour les structures de niveau en ligne (objet DrawingML, champs, etc.) dans un paragraphe. La propriété SDTProperties et la propriété SDTContent sous cette classe doivent être utilisées pour spécifier les propriétés et le contenu de la balise de document structuré actuelle. Voici les étapes détaillées pour créer un formulaire à remplir avec des contrôles de contenu dans Word.

  • Créez un objet Document.
  • Ajoutez une section à l'aide de la méthode Document.addSection().
  • Ajoutez une table à l’aide de la méthode Section.addTable().
  • Ajoutez un paragraphe à une cellule de tableau spécifique à l’aide de la méthode TableCell.addParagraph().
  • Créez une instance de la classe StructureDocumentTagInline et ajoutez-la au paragraphe en tant qu'objet enfant à l'aide de la méthode Paragraph.getChildObjects().add().
  • Spécifiez les propriétés et le contenu de la balise de document structuré à l'aide des méthodes sous la propriété SDTProperties et la propriété SDTContent de l'objet StructureDocumentTagInline. Le type de balise de document structuré est défini via la méthode SDTProperties.setSDTType().
  • Empêchez les utilisateurs de modifier le contenu en dehors des champs de formulaire à l'aide de la méthode Document.protect().
  • Enregistrez le document à l'aide de la méthode Document.saveToFile().
  • Java
import com.spire.doc.*;
    import com.spire.doc.documents.*;
    import com.spire.doc.fields.DocPicture;
    import com.spire.doc.fields.TextRange;
    
    import java.util.Date;
    
    public class CreateFillableForm {
    
        public static void main(String[] args) {
    
            //Create a Document object
            Document doc = new Document();
    
            //Add a section
            Section section = doc.addSection();
    
            //add a table
            Table table = section.addTable(true);
            table.resetCells(7, 2);
    
            //Add text to the cells of the first column
            Paragraph paragraph = table.getRows().get(0).getCells().get(0).addParagraph();
            paragraph.appendText("Plain Text Content Control");
            paragraph = table.getRows().get(1).getCells().get(0).addParagraph();
            paragraph.appendText("Rich Text Content Control");
            paragraph = table.getRows().get(2).getCells().get(0).addParagraph();
            paragraph.appendText("Picture Content Control");
            paragraph = table.getRows().get(3).getCells().get(0).addParagraph();
            paragraph.appendText("Drop-Down List Content Control");
            paragraph = table.getRows().get(4).getCells().get(0).addParagraph();
            paragraph.appendText("Check Box Content Control");
            paragraph = table.getRows().get(5).getCells().get(0).addParagraph();
            paragraph.appendText("Combo box Content Control");
            paragraph = table.getRows().get(6).getCells().get(0).addParagraph();
            paragraph.appendText("Date Picker Content Control");
    
            //Add a plain text content control to the cell (0,1)
            paragraph = table.getRows().get(0).getCells().get(1).addParagraph();
            StructureDocumentTagInline sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Text);
            sdt.getSDTProperties().setAlias("Plain Text");
            sdt.getSDTProperties().setTag("Plain Text");
            sdt.getSDTProperties().isShowingPlaceHolder(true);
            SdtText text = new SdtText(true);
            text.isMultiline(false);
            sdt.getSDTProperties().setControlProperties(text);
            TextRange tr = new TextRange(doc);
            tr.setText("Click or tap here to enter text.");
            sdt.getSDTContent().getChildObjects().add(tr);
    
            //Add a rich text content control to the cell (1,1)
            paragraph = table.getRows().get(1).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Rich_Text);
            sdt.getSDTProperties().setAlias("Rich Text");
            sdt.getSDTProperties().setTag("Rich Text");
            sdt.getSDTProperties().isShowingPlaceHolder(true);
            text = new SdtText(true);
            text.isMultiline(false);
            sdt.getSDTProperties().setControlProperties(text);
            tr = new TextRange(doc);
            tr.setText("Click or tap here to enter text.");
            sdt.getSDTContent().getChildObjects().add(tr);
    
            //Add a picture content control to the cell (2,1)
            paragraph = table.getRows().get(2).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Picture);
            sdt.getSDTProperties().setAlias("Picture");
            sdt.getSDTProperties().setTag("Picture");
            SdtPicture sdtPicture = new SdtPicture();
            sdt.getSDTProperties().setControlProperties(sdtPicture);
            DocPicture pic = new DocPicture(doc);
            pic.loadImage("C:\\Users\\Administrator\\Desktop\\ChooseImage.png");
            sdt.getSDTContent().getChildObjects().add(pic);
    
            //Add a dropdown list content control to the cell(3,1)
            paragraph = table.getRows().get(3).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            sdt.getSDTProperties().setSDTType(SdtType.Drop_Down_List);
            sdt.getSDTProperties().setAlias("Dropdown List");
            sdt.getSDTProperties().setTag("Dropdown List");
            paragraph.getChildObjects().add(sdt);
            SdtDropDownList sddl = new SdtDropDownList();
            sddl.getListItems().add(new SdtListItem("Choose an item.", "1"));
            sddl.getListItems().add(new SdtListItem("Item 2", "2"));
            sddl.getListItems().add(new SdtListItem("Item 3", "3"));
            sddl.getListItems().add(new SdtListItem("Item 4", "4"));
            sdt.getSDTProperties().setControlProperties(sddl);
            tr = new TextRange(doc);
            tr.setText(sddl.getListItems().get(0).getDisplayText());
            sdt.getSDTContent().getChildObjects().add(tr);
    
            //Add two check box content controls to the cell (4,1)
            paragraph = table.getRows().get(4).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Check_Box);
            SdtCheckBox scb = new SdtCheckBox();
            sdt.getSDTProperties().setControlProperties(scb);
            tr = new TextRange(doc);
            sdt.getChildObjects().add(tr);
            scb.setChecked(false);
            paragraph.appendText(" Option 1");
    
            paragraph = table.getRows().get(4).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Check_Box);
            scb = new SdtCheckBox();
            sdt.getSDTProperties().setControlProperties(scb);
            tr = new TextRange(doc);
            sdt.getChildObjects().add(tr);
            scb.setChecked(false);
            paragraph.appendText(" Option 2");
    
            //Add a combo box content control to the cell (5,1)
            paragraph = table.getRows().get(5).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Combo_Box);
            sdt.getSDTProperties().setAlias("Combo Box");
            sdt.getSDTProperties().setTag("Combo Box");
            SdtComboBox cb = new SdtComboBox();
            cb.getListItems().add(new SdtListItem("Choose an item."));
            cb.getListItems().add(new SdtListItem("Item 2"));
            cb.getListItems().add(new SdtListItem("Item 3"));
            sdt.getSDTProperties().setControlProperties(cb);
            tr = new TextRange(doc);
            tr.setText(cb.getListItems().get(0).getDisplayText());
            sdt.getSDTContent().getChildObjects().add(tr);
    
            //Add a date picker content control to the cell (6,1)
            paragraph = table.getRows().get(6).getCells().get(1).addParagraph();
            sdt = new StructureDocumentTagInline(doc);
            paragraph.getChildObjects().add(sdt);
            sdt.getSDTProperties().setSDTType(SdtType.Date_Picker);
            sdt.getSDTProperties().setAlias("Date Picker");
            sdt.getSDTProperties().setTag("Date Picker");
            SdtDate date = new SdtDate();
            date.setCalendarType(CalendarType.Default);
            date.setDateFormat("yyyy.MM.dd");
            date.setFullDate(new Date());
            sdt.getSDTProperties().setControlProperties(date);
            tr = new TextRange(doc);
            tr.setText("Click or tap to enter a date.");
            sdt.getSDTContent().getChildObjects().add(tr);
    
            //Allow users to edit the form fields only
            doc.protect(ProtectionType.Allow_Only_Form_Fields, "permission-psd");
    
            //Save to file
            doc.saveToFile("output/WordForm.docx", FileFormat.Docx_2013);
        }
    }

Java: Create a Fillable Form in Word

Demander une licence temporaire

Si vous souhaitez supprimer le message d'évaluation des documents générés ou vous débarrasser des limitations fonctionnelles, veuillez demander une licence d'essai de 30 jours pour toi.

Voir également