Copy link to clipboard
Copied
Bonjour,
Est-il possible importé un fichier Xls dans une variable?
Exemple dans une "var monTableau [];".
Merci
Copy link to clipboard
Copied
Quelle plate-forme: Windows ou Mac?
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
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.
En outre, nous pouvons l'utiliser, disons, pour trouver-remplacer les polices dans le document actuel comme dans ce script.
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
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.
Copy link to clipboard
Copied
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
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:
I did this trick successfully on my home PC, but had no time to do the same on Mac yet.
— Kas
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