Convertir des données CSV et TXT en une boîte combo remplissable avec la macro ONLYOFFICE

5 janvier 2023By Dasha

Les produits ONLYOFFICE sont des solutions très puissantes qui couvrent toutes les exigences de notre ère numérique. A partir de la version 7.0, l’équipe d’experts ONLYOFFICE a étendu les fonctionnalités de nos éditeurs avec les formulaires ONLYOFFICE. Conçus pour faciliter le travail avec des documents électroniques, les formulaires ONLYOFFICE peuvent simplifier un grand nombre de tâches de routine. L’un des exemples les plus frappants est l’utilisation de formulaires à remplir pour créer un modèle de contrat de vente. Mais qu’en est-il si les informations de vos clients sont stockées dans des fichiers CSV/TXT séparés ? Dans ce billet de blog, nous allons vous montrer comment construire une macro qui importe des données CSV et TXT et les convertit en une liste déroulante à remplir.

Convertir des données CSV et TXT en une boîte combo remplissable avec la macro ONLYOFFICE

À propos des formulaires ONLYOFFICE

La fonctionnalité étendue apporte des formats qui permettent aux utilisateurs de créer et d’utiliser sans effort des formulaires à remplir dans leurs documents. Le format DOCXF est une extension de fichier basée sur DOCX qui offre une large gamme d’outils pour la création et l’édition de formulaires. Il permet de créer des formulaires à partir de zéro ou d’un fichier DOCX existant. OFORM est une extension OOXML pour les formulaires en ligne prêts à être remplis. Elle rend un modèle de formulaire remplissable et limite l’édition par d’autres utilisateurs.

Les formulaires ONLYOFFICE reprennent la structure d’un document texte et comprennent plusieurs types de champs principales :

  • champ texte
  • boîte combo
  • case à cocher
  • image
  • champ complexe

Ces types de champs contiennent des méthodes qui intègrent la création de champs de texte, de champs complexes, de boîtes combo, de listes déroulantes, de boutons radio, de formulaires d’image, de champs de téléphone et d’adresse électronique.

Nous allons utiliser une classe de boîte combo pour notre macro. L’élément boîte combo intègre une liste déroulante de valeurs que nous importerons depuis le fichier CSV/TXT externe.
Convert CSV and TXT data into a fillable combo box with ONLYOFFICE macro

Construire une macro

La section Formulaire de notre documentation API comprend la méthode Api.CreateComboBoxForm. Elle crée une boîte combo avec les paramètres spécifiés :

 var oComboBoxForm = Api.CreateComboBoxForm({"key": "Personal information", "tip": "Choose your country", "required": true, "placeholder": "Country", "editable": false, "autoFit": false, "items": ["Latvia", "USA", "UK"]});

Le paramètre items contient le tableau des valeurs affichées dans la liste déroulante. Notre ligne de conduite est donc de remplacer ce tableau par le tableau des valeurs obtenues à partir du fichier CSV/TXT externe.

Mais d’abord, nous devons aller chercher le fichier externe et traiter les données. Nous avons utilisé une stratégie similaire avec la macro Importation de données CSV/TXT. Les macros ONLYOFFICE sont basées sur JavaScript, ce qui les rend extrêmement polyvalentes et nous permet d’utiliser des requêtes AJAX :

function LoadFile() {
        $.ajax({
            url: 'file:///C:/Users/LEOPARD/Desktop/Book1.csv',
            dataType: 'text',https://wpblog.onlyoffice.com//wp-admin/post-new.php?lang=en#
        }).done(successFunction);
    }
        LoadFile();

Maintenant que nous avons récupéré le fichier, nous devons traiter ces données brutes et les mettre en forme. Nous ajoutons donc la succesFunction. Elle va prendre les données et décomposer le texte en un tableau d’éléments par lignes :

 function successFunction(data) {
      var arrAllItems = data.split(/\r?\n|\r/);
}

Ensuite, nous ciblons le document actif et créons la boîte combo avec le tableau arrAllItems dans le paramètre items :

 var oDocument = Api.GetDocument();
 var oComboBoxForm = Api.CreateComboBoxForm({ "key": "Personal information1", "tip": "Choose your country", "required": true, "placeholder": "Country", "editable": false, "autoFit": false, "items": arrAllItems });

Après cela, nous créons un paragraphe et y ajoutons la boîte combo :

  var oParagraph = Api.CreateParagraph();
oParagraph.AddElement(oComboBoxForm);

Nous devons maintenant insérer notre boîte combo dans le document. Il existe plusieurs façons d’aborder cette tâche, mais nous suggérons d’utiliser la méthode InsertContent. Elle insère un élément à l’endroit où le curseur est positionné. Nous vous suggérons également de spécifier les propriétés du texte et du paragraphe dans les paramètres. Cela évitera les erreurs éventuelles et le mauvais fonctionnement de la macro :

oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });

Le code entier de la macro est le suivant :

(function()
{
   function LoadFile() {
      $.ajax({
          url: 'file:///filePath,
          dataType: 'text',
      }).done(successFunction);
    }
        LoadFile();

   function successFunction(data) {
        var arrAllItems = data.split(/\r?\n|\r/);
        var oDocument = Api.GetDocument();
        var oComboBoxForm = Api.CreateComboBoxForm({ "key": "Personal information", "tip": "Choose your option", "required": true, "placeholder": "Option", "editable": false, "autoFit": false, "items": arrAllItems });
        var oParagraph = Api.CreateParagraph();
oParagraph.AddElement(oComboBoxForm);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });
    }
})();

Maintenant, exécutons notre macro et voyons comment elle fonctionne !

Remarque !

  • Pour insérer une boîte combo, appuyez sur l’espace après avoir exécuté une macro.
  • Afin d’insérer plusieurs boîtes combo dans le document, utilisez différents paramètres clés de la méthode Api.CreateComboBoxForm.

Cette macro n’est qu’un des nombreux exemples de ce que vous pouvez faire en mettant en œuvre les méthodes de notre API. Nous vous encourageons à expérimenter et espérons que vous utiliserez les concepts décrits dans cet article pour créer vos propres macros.

Nos macros sont basées sur JavaScript, ce qui les rend extrêmement polyvalentes et pratiques. N’hésitez pas à poser des questions ou à partager vos idées avec nous. Nous sommes ouverts à la discussion et à la coopération. Bonne chance dans vos explorations !