Formattage date sur excel avec ExcelTool

Bonjour, je génère un excel à l’aide d’ExcelTool, je souhaiterai pouvoir rentrer avec l’outil des dates formaté au format “date” disponible dans excel
exemple ci-dessous, la date de gauche est au format “standard”, alors que l’autre rentrée manuellement est au format “date”.
image
Cela est-il possible ?

J’avais le même problème avec les nombres : celui de gauche etait considéré comme du texte, alors que celui de droite comme un nombre.
image
Problème que j’ai résolu grâce à la fonction
varExcelRow.add(xls.newCell(i++, varInt));

j’imagine qu’il faudrait créer un équivalent
varExcelRow.add(xls.newCell(i++, varLocalDate));

Bonjour, avez-vous essayé avec cette méthode?

https://docs.simplicite.io/5/javadoc/com/simplicite/util/tools/ExcelTool.html#newCell(int,java.lang.String,org.apache.poi.ss.usermodel.CellType)

exemple

newCell(i++, "2023-01-03", CellType.NUMERIC, ExcelTool.DATE_CELL_WHITE, null)

J’ai essayé
varExcelRow.add(xls.newCell(i++, getFieldValue("evlRfinDate"), CellType.NUMERIC));
mais le CellType reste “standard” sur excel.

Avez vous essayé ça ?

En 5.2.27, on a ajouté un helper pour ajouter une date simplement

newCell(int index, Date date, boolean withTime)

en rajoutant ExcelTool.DATE_CELL_WHITE, null cela ne fonctionne plus du tout, nous allons effectuer la mise à jour et tester la seconde méthode.

Nous avons bien fait la màj vers la 5.2.27.
Après essaie des deux méthodes, le résultat est le même :
image
le format est à personnalisée, ce qui semble être bon, mais la date est toujours à 00/01/1900.

avec ce code :

dateRow.add(xls.newCell(i++, "2023-01-03", CellType.NUMERIC,ExcelTool.DATE_CELL_WHITE, null));
dateRow.add(xls.newCell(i++,new SimpleDateFormat("yyyy-MM-dd").parse("2023-01-03"), false));

Est ce que l’export des responsabilités (date de début et de fin) fonctionne ?

Si oui, dans l’argument ObjectField, passez un Field non null pour aider l’API sinon je suppose que la date devient 0 quelque part.

ObjectField fieldDate = new ObjectField(ObjectField.TYPE_DATE);
newCell(i++, "2023-01-03", CellType.NUMERIC, ExcelTool.DATE_CELL_WHITE, fieldDate);

Sinon le pb vient de votre Excel.

UPDATE : on va renforcer l’API pour mieux détecter une date si le paramètre field est null, sinon ça parse le CellType.NUMERIC effectivement à 0 par défaut un peu plus tard au niveau du addRow. En attendant, il faut spécifier le type d’attribut pour forcer la date.

Je confirme que la solution donnée fonctionne.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.