Use a macro ONLYOFFICE para importar dados CSV e TXT para sua planilha

Publicado por
Klaibson

Armazenar dados tabulares em formato CSV é muito prático de várias maneiras, o que torna esse tipo de arquivo extremamente popular. O ONLYOFFICE Docs permite importar arquivos CSV e TXT locais. No entanto, e se quisermos importar esses arquivos da web sem precisar baixá-los? Esta postagem no blog compartilhará um pequeno truque sobre como isso pode ser feito.


Em nossos posts anteriores, falamos sobre macros do ONLYOFFICE. Eles são baseados em JavaScript e não podemos enfatizar o suficiente como são versáteis. Esse recurso nos ajudará a importar arquivos CSV e TXT remotos. Então, como você já deve ter adivinhado, vamos criar outra macro.

Observação! Esta macro só funciona com a versão para computador do ONLYOFFICE Docs.

Construindo uma macro

Primeiro, precisamos buscar o arquivo. JavaScript é a base do desenvolvimento web, e tem todas as ferramentas necessárias já embutidas. No nosso caso, vamos usar a requisição AJAX:

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

Agora temos os dados, mas são brutos, então precisamos formatá-los. Primeiro, dividimos em linhas:

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

Em seguida, obtemos a planilha ativa:

var oWorksheet = Api.GetActiveSheet();

Já dividimos os dados do array em linhas e agora dividimos em palavras separadas:

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

Em seguida, inserimos esses valores nas células. Para isso, usaremos os métodos GetCells e SetValue. O primeiro seleciona o intervalo e o último insere o valor na célula selecionada. O Método GetCells recebe dois parâmetros: o número de linhas e o número de colunas. Para indicar o número de linhas e colunas, usaremos as variáveis i e j e as incrementaremos a cada iteração do loop for:

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

E, finalmente, para exibir os novos valores, precisamos recalcular todo o documento. Faremos isso implementando o método Api.asc_calculate. Usamos esse método em nossa macro Qualidade do ar. Isso nos permitiu recalcular os dados de entrada com um determinado intervalo. Mas desta vez, vamos remover o parâmetro interval. Desta forma, o documento será recalculado instantaneamente:

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

Todo o código da macro é o seguinte:

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

E agora, vamos executar nossa macro e ver como ela funciona!

Esta pequena macro é um exemplo perfeito da versatilidade do JavaScript. E é apenas uma das muitas implementações possíveis de nossos métodos de API. Nós gentilmente encorajamos você a experimentar e criar seus scripts. Não hesite em compartilhar suas ideias ou macros conosco. Estamos sempre abertos à discussão e cooperação. Boa sorte em seus empreendimentos exploratórios!

Publicado por
Klaibson

This website uses cookies. By continuing to browse the website you agree to our privacy policy.

our privacy policy