7 Replies Latest reply on Feb 21, 2017 5:30 AM by Kasyan Servetsky

    [JS] Open Xls to arry[]

    Liphou Level 1

      Bonjour,

       

      Est-il possible importé un fichier Xls dans une variable?

       

      Exemple dans une "var monTableau [];".

       

      Merci  

        • 1. Re: [JS] Open Xls to arry[]
          Kasyan Servetsky Level 5

          Quelle plate-forme: Windows ou Mac?

          • 2. Re: [JS] Open Xls to arry[]
            Liphou Level 1

            Bonjour Kasyan,

             

            Pour Mac, je veux évite de passé par un fichier .csv, comme il est possible de place le fichier xls dans un textFrames, est-il possible de le placer dans une autre variable?

             

            Merci et bonne journée

            • 3. Re: [JS] Open Xls to arry[]
              Kasyan Servetsky Level 5

              Salut Liphou,

              Je ne connais pas le français du tout, donc je suis sûr que vous me comprenez bien.
              Voici un exemple: il place un fichier Excel dans un cadre de texte temporaire quelque part sur le carton et utilise son contenu pour créer le tableau monTableau.

              10-02-2017 16-17-46.png

              10-02-2017 16-17-17.png

              En outre, nous pouvons l'utiliser, disons, pour trouver-remplacer les polices dans le document actuel comme dans ce script.
              10-02-2017 16-16-20.png


              Main();
              
              function Main() {
                  var line, tempArr;
                  var monTableau = [];
                  var excelFile = new File("~/Desktop/Change fonts list.xlsx");
                  var doc = app.activeDocument;
                  // Créer un cadre de texte quelque part sur le carton
                  var textFrame = doc.pages[0].textFrames.add({geometricBounds: [0.5, 183, 250, 291]});
                  textFrame.place(excelFile);
                  var txt = textFrame.texts[0];
                  var lines = txt.lines
                  
                  for (var i = 0; i < lines.length; i++) {
                      line = lines[i].contents;
                      tempArr = line.split("\t");
                      
                      monTableau.push([tempArr[0], tempArr[1]]);
                  }
              }
              

               

              Cordialement,
              Kasyan

              • 4. Re: [JS] Open Xls to arry[]
                Kasyan Servetsky Level 5

                FR

                Cependant, je voulais dire une autre approche beaucoup plus élégante: nous pouvons lire directement les données d'Excel (sans les placer dans le document InDesign)
                Les trois étapes suivantes sont effectuées en VB ou AS en fonction de la plate-forme:
                1. à l'aide de la feuille Excel, nous pouvons lire la table entière
                2. Lisez-le ligne par ligne en le concaténant en une seule chaîne
                3. En utilisant la commande set value de l'argument script, envoyez la chaîne à JS
                4. Dans JS, obtenez ces valeurs et convertissez la chaîne en tableau

                J'ai fait ce truc avec succès sur mon PC à la maison, mais n'avait pas le temps de faire la même chose sur Mac encore.

                 

                EN

                However, I meant another — much more elegant --  approach: we can read the data from Excel directly (without placing it into InDesign document)

                The following three steps are performed in VB or AS depending on the platform:

                1. using the Excel sheet’s ‘used range’ property we can read the whole table
                2. Read it line-by-line concatenating it into a single string
                3. Using script arguments’ set value command  send the string to JS
                4. In JS get these values and convert the string to array

                 

                I did this trick  successfully on my home PC, but had no time to do the same on Mac yet.

                 

                — Kas

                1 person found this helpful
                • 5. Re: [JS] Open Xls to arry[]
                  Liphou Level 1

                  (Google translation)

                   

                  Thanks Kas,
                  It is already more precise (clearer) for me.
                  For your French, it's very good for me

                  thank you very much

                  Philou

                   

                  /*********

                   

                  Merci Kas,

                  C'est déjà plus précis (plus clair) pour moi.

                  Pour ton Français, c'est très bien pour moi 

                   

                  Merci beaucoup

                   

                  Philou

                  • 6. Re: [JS] Open Xls to arry[]
                    Liphou Level 1

                    Hello Kasyan Servetsky,
                    I tested your code, I have one can modify it here:

                     

                     

                    Bonjour Kasyan Servetsky,

                    j'ai testé votre code, je l'ai un peux modifier le voici :

                     

                    Main() 
                         
                    function Main() {  
                        var line, tempArr;  
                            var monTableau = [];  
                            var excelFile = new File("~/Documents/blabla.xls");  
                            var doc = app.activeDocument;  
                            // Créer un cadre de texte quelque part sur le carton  
                            var textFrame = doc.pages[0].textFrames.add({geometricBounds: [0.5, 183, 250, 291]});  
                            with (app.excelImportPreferences) {
                                    //sheetName = 'Tabelle1'; // adapt default names to your language
                                    rangeName = 'b1:e1687';
                                    tableFormatting =     TableFormattingOptions.EXCEL_UNFORMATTED_TABBED_TEXT;
                            }
                            textFrame.place(excelFile);  
                           
                    
                            var lines = textFrame.parentStory.paragraphs.everyItem().getElements();  
                              
                            for (var i = 0; i < lines.length; i++) {  
                                line = lines[i].contents;  
                                tempArr = line.split("\t");  
                                monTableau.push(tempArr);  
                    
                            }  
                    $.writeln(monTableau.length); 
                    $.writeln(monTableau[1687]); 
                    }
                    

                     

                    Je vais aussi test avec l'ouverture du .xlsx comme en parle Loic.

                    I'll also test with the opening of the .xlsx as Loic talks about it.

                    • 7. Re: [JS] Open Xls to arry[]
                      Kasyan Servetsky Level 5

                      Bonjour Liphou,

                      J'ai écrit une fonction pour Mac qui lit des données directement à partir d'Excel et de le transférer à InDesign. (Voir ici au bas de la page). Cependant, il est totalement non testé depuis que je le polissais il vers le haut sur mon PC à la maison aujourd'hui; Sera en mesure de le tester plus tard ce soir quand je vais à mon travail.

                      Cordialement,
                      Kasyan