Utiliza la macro de ONLYOFFICE para importar datos CSV y TXT a tu hoja de cálculo

18 octubre 2022By Sergey

El almacenamiento de datos tabulares en formato CSV es muy práctico en muchos sentidos, lo que hace que este tipo de archivos sea extremadamente popular. ONLYOFFICE Docs permite importar archivos CSV y TXT locales. Sin embargo, ¿qué pasa si queremos importar estos archivos desde la web sin tener que descargarlos? En esta entrada del blog compartiremos un pequeño truco sobre cómo hacerlo.

Utiliza la macro de ONLYOFFICE para importar datos CSV y TXT a tu hoja de cálculo

En nuestras entradas anteriores hablamos de las macros de ONLYOFFICE. Se basan en JavaScript, y no podemos enfatizar bastante lo versátil que son. Esta característica nos ayudará a manejar la importación de archivos remotos CSV y TXT. Así que, vamos a crear otra macro.

¡Ojo! Esta macro sólo es compatible con la versión de escritorio de ONLYOFFICE Docs.

Creación de la macro

En primer lugar, tenemos que obtener el archivo. JavaScript es la piedra angular del desarrollo web, y tiene todas las herramientas necesarias ya incorporadas. En nuestro caso, vamos a utilizar la solicitud AJAX:

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

Ahora tenemos los datos, pero están sin procesar, así que tenemos que formatearlos. Primero, los dividimos en líneas:

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

Entonces obtenemos la hoja de cálculo activa:

var oWorksheet = Api.GetActiveSheet();

Ya hemos dividido los datos en líneas, y ahora los dividimos en palabras separadas:

   for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
            var rowCells = arrAllRows[singleRow].split(',');
}

Luego insertamos estos valores en las celdas. Para ello, utilizaremos los métodos GetCells y SetValue. El primero selecciona el rango y el segundo inserta el valor en la celda seleccionada. El método GetCells toma dos parámetros: el número de filas y el número de columnas. Para indicar el número de filas y columnas, utilizaremos las variables i y j y las incrementaremos en cada iteración del bucle “for”:

 for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
               oWorksheet.GetCells(i,j).SetValue(rowCells[rowCell]);
                j = j + 1;
            }
            i = i + 1;
            j = 1;
        }
    }

Y finalmente, para mostrar los nuevos valores, necesitamos recalcular todo el documento. Lo haremos implementando el método Api.asc_calculate. Este método lo utilizamos en nuestra macro Calidad del aire. Nos permitía recalcular los datos entrantes con un intervalo determinado. Pero esta vez, eliminaremos el parámetro del intervalo. De esta manera, el documento se recalculará instantáneamente:

  let reload = setInterval(function(){
      Api.asc_calculate(Asc.c_oAscCalculateType.All);
    });

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

(function() {
          function LoadFile() {
        $.ajax({
           url: 'your url',
            dataType: 'text',
        }).done(successFunction);
    }
    function successFunction(data) {
    var arrAllRows = data.split(/\r?\n|\r/);
    var oWorksheet = Api.GetActiveSheet();

    //reference point
    var i = 1;
    var j = 1;

        for (var singleRow = 0; singleRow < arrAllRows.length; singleRow++) {
            var rowCells = arrAllRows[singleRow].split(',');
            for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
                oWorksheet.GetCells(i,j).SetValue(rowCells[rowCell]);
                j = j + 1;
            }
            i = i + 1;
            j = 1;
        }
    }
    LoadFile();
    let reload = setInterval(function(){
      Api.asc_calculate(Asc.c_oAscCalculateType.All);
    });
    })();

Y ahora, ¡vamos a ejecutar nuestra macro y ver cómo funciona!

Utiliza la macro de ONLYOFFICE para importar datos CSV y TXT a tu hoja de cálculo

Esta pequeña macro es un ejemplo perfecto de la versatilidad de JavaScript. Y es sólo una de las muchas implementaciones posibles de nuestros métodos de la API. Te recomendamos que experimentes y crees tus propios scripts. No dudes en compartir tus ideas o tus macros con nosotros. Siempre estamos abiertos al debate y a la cooperación. Te deseamos mucha suerte en tus esfuerzos de exploración.