Usa le macro di ONLYOFFICE per importare dati CSV e TXT nel tuo foglio di calcolo

18 ottobre 2022By Elena

La memorizzazione di dati tabulari in un formato CSV è molto pratica in alcuni modi, il che rende questo tipo di file estremamente popolare. ONLYOFFICE Docs consente di importare file CSV e TXT locali. Tuttavia, cosa succede se vogliamo importare questi file dal web senza doverli scaricare? Questo post condivide un piccolo trucco su come farlo. Use ONLYOFFICE macro to import CSV and TXT data into your spreadsheet Nei nostri post precedenti abbiamo parlato delle macro di ONLYOFFICE. Sono basati su JavaScript e non riusciamo a mostrare quanto sono versatili. Questa funzione ci aiuterà ad affrontare l’importazione di file CSV e TXT remoti. Quindi, come avrai già intuito, creeremo un’altra macro.

Ti preghiamo di notare! Questa macro funziona solo con la versione desktop di ONLYOFFICE Docs.

Creazione di una macro

Per prima cosa, dobbiamo recuperare il file. JavaScript è la pietra angolare dello sviluppo web e ha tutti gli strumenti necessari già integrati. Nel nostro caso, utilizzeremo la richiesta AJAX:

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

Ora abbiamo i dati, ma sono grezzi, quindi dobbiamo formattarli. Per prima cosa, li dividiamo in linee:

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

Quindi otteniamo il foglio di calcolo attivo:

var oWorksheet = Api.GetActiveSheet();

Abbiamo già suddiviso i dati dell’array in righe e ora li dividiamo in parole separate:

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

Quindi inseriamo questi valori nelle celle. Per farlo, utilizzeremo i metodi GetCells e SetValue. Il primo seleziona l’intervallo e il secondo inserisce il valore nella cella selezionata. Il metodo GetCells accetta due parametri: il numero di righe e il numero di colonne. Per indicare il numero di righe e colonne, useremo le variabili i e j e le incrementeremo ad ogni iterazione del ciclo for:

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

Infine, per visualizzare i nuovi valori, è necessario ricalcolare l’intero documento. Lo faremo implementando il metodo Api.asc_calculate. Abbiamo utilizzato questo metodo nella nostra macro Qualità dell’aria. Ci ha permesso di ricalcolare i dati in entrata con un certo intervallo. Ma questa volta rimuoveremo il parametro interval. In questo modo, il documento verrà ricalcolato all’istante:

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

L’intero codice della macro è il seguente:

(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 ora, eseguiamo la nostra macro e vediamo come funziona!

Use ONLYOFFICE macro to import CSV and TXT data into your spreadsheet

Questa piccola macro è un perfetto esempio di versatilità JavaScript. Ed è solo una delle tante possibili implementazioni dei nostri metodi API. Ti invitiamo gentilmente a sperimentare e creare i tuoi script. Non esitare a condividere con noi le tue idee o le tue macro. Siamo sempre aperti alla discussione e alla cooperazione. In bocca al lupo per i tuoi sforzi esplorativi!