• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

[JS] Open Xls to arry[]

Enthusiast ,
Feb 08, 2017 Feb 08, 2017

Copy link to clipboard

Copied

Bonjour,

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

Exemple dans une "var monTableau [];".

Merci  

TOPICS
Scripting

Views

806

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guru ,
Feb 09, 2017 Feb 09, 2017

Copy link to clipboard

Copied

Quelle plate-forme: Windows ou Mac?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 09, 2017 Feb 09, 2017

Copy link to clipboard

Copied

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guru ,
Feb 10, 2017 Feb 10, 2017

Copy link to clipboard

Copied

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.contents;

        tempArr = line.split("\t");

       

        monTableau.push([tempArr[0], tempArr[1]]);

    }

}

Cordialement,
Kasyan

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 21, 2017 Feb 21, 2017

Copy link to clipboard

Copied

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.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.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guru ,
Feb 21, 2017 Feb 21, 2017

Copy link to clipboard

Copied

LATEST

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guru ,
Feb 10, 2017 Feb 10, 2017

Copy link to clipboard

Copied

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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 13, 2017 Feb 13, 2017

Copy link to clipboard

Copied

(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

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines