Convierte datos CSV y TXT en un cuadro combinado rellenable con la macro de ONLYOFFICE

5 enero 2023By Sergey

Los productos de ONLYOFFICE son soluciones muy potentes que cubren todas las demandas de nuestra era digital. A partir de la versión 7.0 el equipo de expertos de ONLYOFFICE amplió la funcionalidad de nuestros editores con los formularios de ONLYOFFICE. Diseñados para facilitar el trabajo con documentos electrónicos, los formularios de ONLYOFFICE pueden aliviar muchas tareas mundanas. Uno de los buenos ejemplos es el uso de formularios rellenables para crear una plantilla de acuerdo de ventas. ¿Pero qué pasa si tienes información de tus clientes almacenada en archivos CSV/TXT separados? En esta entrada de blog te mostraremos cómo crear una macro que importe datos CSV y TXT y los convierta en un cuadro combinado rellenable.

Convierte datos CSV y TXT en un cuadro combinado rellenable con la macro de ONLYOFFICE

Acerca de los formularios de ONLYOFFICE

La funcionalidad ampliada aporta formatos que permiten a los usuarios crear y trabajar sin esfuerzo con formularios rellenables en sus documentos. El formato DOCXF es una extensión de archivo basada en DOCX que ofrece una amplia gama de herramientas para crear y editar formularios. Permite crear formularios desde cero o a partir de un archivo DOCX existente. OFORM es una extensión de OOXML diseñada para formularios en línea listos para rellenar. Permite rellenar una plantilla de formulario y restringe la edición por parte de otros usuarios.

Los formularios de ONLYOFFICE heredan la estructura de un documento de texto e incluyen varias clases principales:

  • campo de texto
  • cuadro combinado
  • casilla de verificación
  • campo de imagen
  • campo complejo

Estas clases contienen métodos que incorporan la creación de campos de texto, campos complejos, cuadros combinados, listas desplegables, botones de radio, campos de imagen, teléfono y dirección de correo electrónico.

Utilizaremos la clase combo box para nuestra macro. El elemento combo box incorpora una lista desplegable de valores que importaremos del archivo CSV/TXT externo.

Convierte datos CSV y TXT en un cuadro combinado rellenable con la macro de ONLYOFFICE

Creación de la macro

La sección Formulario de nuestra documentación de la API incluye el método Api.CreateComboBoxForm. Se usa para crear un cuadro combinado con los parámetros especificados:

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

El parámetro items contiene la matriz de los valores mostrados en la lista desplegable. Por lo tanto, tenemos que sustituir esta matriz por la matriz de valores obtenida del archivo CSV/TXT externo.

Pero primero, necesitamos obtener el archivo externo y procesar los datos. Usamos una estrategia similar con la macro para importar datos CSV/TXT. Las macros de ONLYOFFICE están basadas en JavaScript lo que las hace extremadamente versátiles y nos permite usar solicitudes 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();

Ahora que hemos obtenido el archivo, necesitamos procesar estos datos en bruto y darles formato. Así que añadimos succesFunction. Tomará los datos y dividirá el texto en una matriz de elementos por líneas:

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

A continuación, nos dirigimos al documento activo y creamos el cuadro combinado con la matriz arrAllItems en el parámetro 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 });

After that we create a paragraph and add the combo box to it:

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

Ahora necesitamos insertar nuestro cuadro combinado en el documento. Hay varias maneras de abordar esta tarea, pero sugerimos utilizar el método InsertContent. Inserta un elemento justo donde está posicionado el cursor. También sugerimos especificar las propiedades del texto y del párrafo en los parámetros. Esto impedirá que haya errores y que la macro no funcione correctamente:

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

El código completo de la macro es el siguiente:

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

Ahora, ¡vamos a ejecutar nuestra macro para ver cómo funciona!

¡Ojo!

  • Para insertar un cuadro combinado, presiona la barra espaciadora después de ejecutar la macro.
  • Para insertar varios cuadros combinados en el documento, utiliza diferentes parámetros clave del método Api.CreateComboBoxForm.

Esta macro es apenas uno de los muchos ejemplos de lo que puedes hacer implementando nuestros métodos de la API. Te recomendamos que experimentes y esperamos que utilices los conceptos descritos en este artículo para crear tus propias macros.

Nuestras macros están basadas en JavaScript, lo que las hace extremadamente versátiles y prácticas. No dudes en hacernos preguntas o compartir tus ideas con nosotros. Estamos abiertos al debate y la cooperación. ¡Te deseamos mucha suerte en tus esfuerzos exploratorios!