Konvertieren von CSV- und TXT-Daten in ein ausfüllbares Kombinationsfeld mit dem ONLYOFFICE-Makro

9 Januar 2023By Vlad

ONLYOFFICE-Produkte sind sehr leistungsfähige Lösungen, die alle Anforderungen unseres digitalen Zeitalters abdecken. Ab der Version 7.0 hat das Team von ONLYOFFICE-Experten die Funktionalität unserer Editoren durch ONLYOFFICE-Formulare erweitert. ONLYOFFICE-Formulare wurden entwickelt, um die Arbeit mit elektronischen Dokumenten zu erleichtern und können viele alltägliche Aufgaben abnehmen. Ein gutes Beispiel ist die Verwendung ausfüllbarer Formulare für die Erstellung einer Vorlage für einen Kaufvertrag. Was aber, wenn Sie die Daten Ihrer Kunden in separaten CSV/TXT-Dateien gespeichert haben? In diesem Blogbeitrag zeigen wir Ihnen, wie Sie ein Makro erstellen, das CSV- und TXT-Daten importiert und in ein ausfüllbares Kombinationsfeld konvertiert.

Convert CSV and TXT data into a fillable combo box with ONLYOFFICE macro

Über ONLYOFFICE-Formulare

Die erweiterte Funktionalität bringt Formate mit, die es den BenutzerInnen ermöglichen, ausfüllbare Formulare in ihren Dokumenten zu erstellen und damit zu arbeiten. Das DOCXF-Format ist eine auf DOCX basierende Dateierweiterung, die eine Vielzahl von Tools zur Erstellung und Bearbeitung von Formularen bietet. Es ermöglicht die Erstellung von Formularen von Grund auf oder aus einer bestehenden DOCX-Datei. OFORM ist eine OOXML-Erweiterung für ausfüllbare Online-Formulare. Sie macht eine Formularvorlage ausfüllbar und schränkt die Bearbeitung für andere BenutzerInnen ein.

ONLYOFFICE-Formulare haben die Struktur eines Textdokuments und umfassen mehrere Hauptklassen:

  • Textfeld
  • Combobox (Kombinationsfeld)
  • Checkbox
  • Bild
  • komplexe Felder

Diese Klassen enthalten Methoden zur Erstellung von Textfeldern, komplexen Feldern, Comboboxen, Dropdown-Listen, Optionsfeldern, Bildformularen, Telefon- und E-Mail-Adressfeldern.

Für unser Makro werden wir eine Combobox-Klasse verwenden. Das Combobox-Element enthält eine Dropdown-Liste mit Werten, die wir aus der externen CSV/TXT-Datei importieren werden

Convert CSV and TXT data into a fillable combo box with ONLYOFFICE macro

Erstellung eines Makros

Der Formular-Bereich unserer API-Dokumentation umfasst die Methode Api.CreateComboBoxForm. Sie erstellt ein Kombinationsfeld mit den angegebenen Parametern:

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

Der Parameter items enthält das Array mit den Werten, die in der Dropdown-Liste angezeigt werden. Unser Vorgehen besteht also darin, dieses Array durch das Array mit den Werten aus der externen CSV/TXT-Datei zu ersetzen.

Doch zunächst müssen wir die externe Datei abrufen und die Daten verarbeiten. Wir haben eine ähnliche Strategie mit dem Makro zum Import von CSV/TXT-Daten verwendet. ONLYOFFICE-Makros sind JavaScript-basiert, was sie extrem vielseitig macht und uns die Verwendung von AJAX-Anfragen ermöglicht:

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();

Nachdem wir nun die Datei abgerufen haben, müssen wir diese Rohdaten verarbeiten und formatieren. Also fügen wir die Funktion successFunction hinzu. Sie nimmt die Daten und zerlegt den Text in ein Array von Elementen nach Zeilen:

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

Dann zielen wir auf das aktive Dokument und erstellen das Kombinationsfeld mit dem Array arrAllItems im Parameter 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 });

Danach erstellen wir einen Absatz und fügen die Combobox hinzu:

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

Nun müssen wir die Combobox in das Dokument einfügen. Es gibt mehrere Möglichkeiten, diese Aufgabe zu bewältigen, aber wir schlagen vor, die Methode InsertContent zu verwenden. Sie fügt ein Element genau an der Stelle ein, an der sich der Cursor befindet. Wir empfehlen außerdem, die Text- und Absatzeigenschaften in den Parametern festzulegen. Dadurch werden mögliche Fehler und Fehlfunktionen des Makros vermieden:

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

Der gesamte Makrocode sieht wie folgt aus:

(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 });
    }
})();

Führen wir nun unser Makro aus und sehen wir, wie es funktioniert!

Hinweis!

  • Um eine Combobox einzufügen, drücken Sie nach der Ausführung eines Makros die Leertaste.
  • Um mehrere Kombinationsfelder in das Dokument einzufügen, verwenden Sie verschiedene Schlüsselparameter der Methode Api.CreateComboBoxForm.

Dieses Makro ist nur eines von vielen Beispielen dafür, was Sie durch die Implementierung unserer API-Methoden erreichen können. Wir möchten Sie ermutigen, zu experimentieren und hoffen, dass Sie die in diesem Beitrag beschriebenen Konzepte nutzen werden, um Ihre eigenen Makros zu erstellen.

Unsere Makros basieren auf JavaScript, was sie extrem vielseitig und praktisch macht. Zögern Sie nicht, uns Fragen zu stellen oder Ihre Ideen mit uns zu teilen. Wir sind offen für Diskussionen und Zusammenarbeit. Viel Glück bei Ihren Versuchen!