Importer un fichier EXCEL

Product :4D - 4D Server
4D : v16.3
OS : Mac OS X

Bonjour,

J’ai regardé par mal de fil sur le sujet mais chez moi, ça ne rentre pas… :cry:

J’aimerais (si possible :-D) :
Sélectionner un fichier .xls a partir de ma base 4D.
indiquer combien de colonne à importer.
lire et créer un enregistrement pour chaque ligne, et mettre chaque colonne dans un champ.

exemple de structure:
Une table : Importation
Champs:Colonne1, Colonne2, Colonne3, Colonne4, Colonne5, Colonne6, Colonne7, Colonne8, Colonne9, Colonne10

et tout ça sans passer par un export de Excel en fichier texte .csv

Ca:
[]26821675;“Your comment here…”[/]
dans ça:
[]26821728;“Your comment here…”[/]

Merci d’avance.

for very simple CSV you can use the generic import/export feature and set the field delimiter to comma.

http://doc.4d.com/4Dv16/4D/16.4/Exporter-des-donnees-vers-des-fichiers.300-3998817.fr.html

or set FldDelimit to comma

http://doc.4d.com/4Dv16/4D/16.4/Variables-systeme.300-3978334.fr.html

but of course, this won’t work for complex CSV files.

example of using Match regex to import/export CSV

https://github.com/miyako/4d-component-csv

other Excel examples

https://github.com/miyako/4d-plugin-free-xl
https://github.com/miyako/4d-plugin-opc
https://github.com/miyako/4d-plugin-xls-basic-excel
https://github.com/miyako/4d-plugin-xlsxio
https://github.com/miyako/4d-plugin-xls

: Florent LE BOT

et tout ça sans passer par un export de Excel en fichier texte .csv
“sans passer par” implique de lire directement le fichier excel (xlsx ou autre), ce qui implique d’utiliser un outil tiers car lire ce format demande beaucoup de temps et de code. Tu as des liens dans le message de Miyako pour ce faire.

Alternativement, tu as le copier coller : l’utilisateur copie sa sélection de cellules, va dans 4D où il a un bouton “coller”. Il suffit à ce bouton de lire le texte du presse papier où les lignes sont délimitées par des “à la ligne” et les colonnes par des tabulations :
<code 4D>
$xls_t:=Lire texte dans conteneur
TABLEAU TEXTE($ligne_at;0)
Str_explode (->$ligne_at;$xls_t;"\n")
boucle($i;1;taille tableau($ligne_at))
tableau texte($cellule_at;0)
Str_explode (->$cellule_at;$ligne_at{$i};"\t")
boucle($j;1;$cellule_at)
$cellule_t:=$cellule_at{$j}
fin de boucle
Fin de boucle
</code 4D>

: Arnaud DE MONTARD

Str_explode
Précisons à notre camarade que Str_explode est une de tes méthodes perso pour splitter une chaine

Pour être complet, voici le code de http://forums.4d.com/Post/FR/11429115/1/11429116#11429116str_explode>

Ça m’a beaucoup aidé.
Merci à tout le monde. :smiley:

Hello Keisuke
I’m looking the best plug in for read cel or col or line inside a xlsx file.
In fact, i’m lost between xlnt, xls, freexl, etc…
For the moment i try xlnt but it’s not possible for me to read a cell. your example talk about how to write (set instruction) but not how to read.
Have you some example
Tks
I’m reading the http://forums.4d.com/Post/EN/22545562/1

I don’t know if there is an absolute best, at least in the free realm.

I guess you just need to find what’s best for you.

reading XLSX

https://github.com/miyako/4d-plugin-xlnt

the answer is in the first 2 lines. you just look inside $o

$object:=xlnt IMPORT WORKBOOK ($path;$password)
$o:=JSON Parse($object)

https://github.com/miyako/4d-plugin-xlsxio

likewise

json:=XLSX TO JSON (path;options;error)

https://github.com/miyako/4d-plugin-opc

this one is a bit hard.
you need deep understanding of the internal xml used inside XLSX.

Thanks
and you’re right.We must be a deep user of xml, that’s not really my case.
i can use them, specially for the web service
In fact, if you can give me instruction to read the A2 cell inside the first sheet by xnlt, it will be really helpfull
I will try to develop my code by your example because i need to read a column
Tks again