Utilisez la macro ONLYOFFICE pour importer des données CSV et TXT dans votre feuille de calcul

18 octobre 2022By Dasha

Le stockage de données tabulaires dans un format CSV est très pratique à bien des égards, ce qui rend ce type de fichier extrêmement populaire. ONLYOFFICE Docs permet d’importer des fichiers CSV et TXT locaux. Cependant, comment faire si nous voulons importer ces fichiers depuis le web sans avoir à les télécharger ? Ce billet de blog vous expliquera une petite astuce pour y parvenir.

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

Dans les billets de blog précédents, nous avons parlé des macros ONLYOFFICE. Elles sont basées sur JavaScript, et nous ne saurions trop insister sur leur polyvalence. Cette fonctionnalité va nous permettre de mieux gérer l’importation de fichiers CSV et TXT distants. Donc, comme vous l’avez peut-être déjà deviné, nous allons créer une autre macro.

Remarque ! Cette macro n’est opérationnelle qu’avec les applications de bureau ONLYOFFICE Docs.

Construction d’une macro

Tout d’abord, nous devons aller chercher le fichier. JavaScript est la pierre angulaire du développement web, et il possède tous les outils nécessaires déjà intégrés. Dans notre cas, nous allons utiliser une requête AJAX :

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

Nous avons maintenant les données, mais elles sont brutes, donc il faut les mettre en forme. D’abord, nous les divisons en lignes :

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

Ensuite, nous recevons la feuille de calcul active :

var oWorksheet = Api.GetActiveSheet();

Nous avons déjà divisé les données du tableau en lignes, et maintenant, nous les divisons en mots séparés :

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

Nous insérons ensuite ces valeurs dans les cellules. Pour ce faire, nous allons utiliser les méthodes GetCells et SetValue. La première sélectionne la plage, et la seconde insère la valeur dans la cellule sélectionnée. La méthode GetCells prend deux paramètres : le nombre de lignes et le nombre de colonnes. Pour indiquer le nombre de lignes et de colonnes, nous utiliserons les variables i et j et les incrémenterons à chaque itération du for-loop :

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

Et enfin, pour afficher les nouvelles valeurs, nous devons recalculer l’ensemble du document. Nous le ferons en implémentant la méthode Api.asc_calculate. Nous avons utilisé cette méthode dans notre macro de la qualité de l’air. Elle nous permettait de recalculer les données entrantes avec un certain intervalle. Mais cette fois, nous allons supprimer le paramètre d’intervalle. De cette façon, le document sera recalculé instantanément :

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

Le code entier de la macro est le suivant :

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

Maintenant, exécutons notre macro et voyons comment elle fonctionne !

Use ONLYOFFICE macro to import CSV and TXT data into your spreadsheetCette petite macro est un parfait exemple de la polyvalence de JavaScript. Et ce n’est qu’une des nombreuses implémentations possibles des méthodes de notre API. Nous vous encourageons vivement à expérimenter et à créer vos propres scripts. N’hésitez pas à partager vos idées ou vos macros avec nous. Nous sommes toujours ouverts à la discussion et à la coopération. Nous vous souhaitons bonne chance dans vos travaux d’exploration !