Skip to content

$excel.setValue

Description

Inscrit une valeur ou un ensemble de valeurs dans une worksheet.

Syntaxe

$excel.setValue( workbook , rules [ , options ] )

Paramètres

workbook pojo
Workbook à traiter
rules map / array

Règles décrivant la méthode d'enregistrement de valeurs. Les règles doivent être passées sous la forme d'un objet de type map ayant les propriétés suivantes:

sheet string
Nom de la sheet dans laquelle inscrire les valeurs
format string

Format de la valeur. Par défaut, le format est value.

Les types de formats reconnus sont:

value

La valeur est une valeur textuelle à inscrire dans la cellule, ou un ensemble de valeurs textuelles (liste de valeurs ou matrice) à inscrire dans la cellule et ses cellules voisines.

Le type de la valeur (valeur, table ou matrice) dépend du type de l'objet passé à la propriété value.

text
Idem que value
html
La valeur est du html avec formatage. La méthode se charge alors de convertir le html pour appliquer le formatage au texte dans la cellule
sql
La valeur est une requête SQL de type SELECT. La méthode se charge alors d'évaluer la requête et de reprendre le(s) résultat(s) dans la cellule et éventuellement dans ses voisines également
cell string
Adresse de la cellule de destination au format Excel, par exemple "B5"
value

Valeur. La propriété peut être une valeur unique ou un tableau de valeurs (lui-même pouvant être un tableau de valeurs dans le cas où l'on veut représenter une matrice).

La nature de la valeur doit être cohérente avec le format annoncé via la propriété format.

params array / map
Paramètres à passer à la requête sql dans le cas où le value est un prepared statement. Les paramètres sont à passer selon la même syntaxe que pour la méthode $sql.select(), à savoir sous la forme de table ou de map.
style string
Facultatif. Style à passer à la cellule. Le fait de passer le style directement au $data.setValue est un raccourci pour éviter de devoir invoquer la méthode $data.setStyle séparément. Par ailleurs, le fait de spécifier un style via cette propriété prime sur les éventuels styles passés au niveau des options.
shiftRows boolean
Facultatif. Flag true/false indiquant si l'insertion de la valeur doit entraîner un décalage des lignes situées en-dessous de la cellule de destination. Par défaut ce flag est à false.
shiftColumns boolean
Facultatif. Flag true/false indiquant si l'insertion de la valeur doit entraîner un décalage des colonnes situées sur la droite de la cellule de destination. Par défaut ce flag est à false.
options map

Facultatif. Map d'options à utiliser pour le traitement. Les options reconnues sont:

dateStyleId
Index de style à appliquer aux valeurs de type date
timeStyleId
Index de style à appliquer aux valeurs de type heure (time)
timestampStyleId
Index de style à appliquer aux valeurs de type timestamp
linkStyleId
Index de style à appliquer aux cellules contenant des liens de type "http://...", "ftp://...", "file://...", "url://...", etc.

Retour

Retourne true si l'opération a réussi, sinon false

Exemple

Exemple simple d'écriture dans un fichier Excel pré-existant

1
2
3
var xl = $excel.open("C:/Temp/source.xlsx");
$excel.setValue(xl, { sheet: "Feuil1", cell: "B5", value: "Hello world"});
$excel.save(xl, "C:/Temp/newfile.xlsx");

Exemple de création de nouveau fichier Excel, d'insertion de valeurs et d'envoi dans le réponse http.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// création du workbook en mémoire (attention, il ne s'agit pas d'un fichier Excel, juste d'un workbook)
var xl = $excel.create();
$excel.addSheet(xl, "Extraction");

// ligne d'en-tête
$excel.setValue(xl, {
    sheet: "Extraction",
    cell: "A1",
    value: [ "Date/Heure", "Article", "Méthode", "Quantité", "Prix unitaire", "Prix total" ]
});

// données
$excel.setValue(xl, {
    sheet: "Extraction",
    cell: "A2",
    format: "sql",
    value: `select v.DateHeure "Date/Heure",
                   ca.Nom "Article",
                   v.TypePaiement "Méthode",
                   va.Quantite "Quantité",
                   printf("%.2f", va.PrixUnite) "Prix unitaire",
                   printf("%.2f", va.PrixTotal) "Prix total"
            from VenteArticle va inner join Vente v on v.IdVente=va.RefVente
                                 left join CaisseArticle ca on ca.IdCaisseArticle=va.RefArticle
            where v.RefCaisse=?
            order by v.DateHeure, ca.Numero`::T,
    params: [ #idCaisse ]
});

// adaptation auto des largeurs de colonnes
$excel.autosize(xl, { sheet: "Extraction", columns: "*" });

// sauvegarde dans un fichier
var filename = $uuid.get() & ".xlsx",
    file = $file.create(filename);
$excel.save(xl, file);

// envoi du fichier dans la réponse
$response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
$response.setContentDisposition(`inline; filename=` & filename);
$response.addContent(file);
$response.flush();

// nettoyage du temp
$file.delete(file);