Template Excel qui contient des valeurs saisies par utilisateur

Bonjour,

En v4.0 patch level P21

J’aimerais publier des données dans un template Excel pas seulement avec les données qui viennent de la base mais j’aimerais aussi permettre l’utilisateur d’ajouter quelques unes. Comment est-ce que je peux facilement passer des valeurs dans ce fichier Excel.

Merci d’avance

Je ne suis pas sûr de bien comprendre la question…

Il y a surement plusieurs manière de répondre à votre besoin, mais nous devons déjà comprendre quel est exactement ce besoin

Salut,

J’ai préparé un template de publication de type méthode. J’aimerais savoir comment je peux permettre l’utilisateur de passer des paramètres à cette fonction java. Les paramètres qui seront saisies par l’utilisateur ne sont pas stockés dans la base de données.

Solution 1 : une boite de dialogue qui demande l’utilisateur de saisir des valeurs.
Solution2 : Ajouter 2 champs de textes dans la liste (Voir l’image).

Quelle est la bonne façon de faire cela?

Merci d’avance

Si l’export de votre liste prend des paramètres (hors filtres ou autre fonction de tris sur la liste), il est préférable :

  • de créer une Action de liste avec dans l’onglet Validation les 2 champs question non persistant, une boite de dialogue simple sera affichée
  • la méthode back de cette action prendra en paramètre le Map des paramètres (nom du champ => valeur saisie) et implémentera l’export Excel dans un champ document persistant de votre objet (ou retourne l’URL du document, ou du javascript client de preview du doc…)
  • pour que l’utilisateur peut alors prévisualiser ou télécharger

Si les 2 champs sont des filtres, autant laisser l’utilisateur filtrer lui-même la liste ou lui paramétrer des recherches prédéfinies.

Oui une action avec paramètres me semble la bonne approche dans ce contexte.

  1. Le code de l’action valorise un ou plusieurs paramètres d’objet this.setParameter("<param name>", <param value>))

  2. L’action retourne un appel à la publication et la méthode de la publication récupère les valeurs de ces paramètres d’objet par this.getParameter("<param name>")

Hello,

J’ai créée une action de liste avec une question dans l’onglet validation mais je n’arrive pas à récupérer la valeur saisir par l’utilisateur.

Au début, j’ai laissé l’utilisateur filtré lui-même la liste mais maintenant je passe à la deuxième option !!!

J’ai essayé

  • getField(“anneesImpositionDialog”).getValue()

  • this.getGrant().getField(“anneesImpositionDialog”).getValue()

C’est la méthode de l’action qui récupère les paramètres dans un Map comme je l’avais indiqué.

exemple

public String myMethodAction(Map<String,String> params) {
  String val = params.get("myField");
  ....
   return null;
}
1 Like

Merci ça marche maintenant !!!

Hello,

Juste un petit souci avec cet appel à la publication !!!

J’ai préparé un template de publication Excel de type méthode qui fonctionne bien. Mais quand j’appelle la fonction invokePrint, la méthode est bien appelé mais le fichier ne se télécharge pas.

merci d’avance.

voici le code et la capture d’écran.

public byte[] getFiscalYear(Map<String,String> params){		
	this.setParameter("PeriodFiscal", params.get("anneesImpositionDialog"));
	try{
		return (byte[]) this.invokePrint("DomsecoPublicationExcel")  ;
	}catch(Exception e ){	/*log*/		
	}
	return null;
}

Capture%205

Je n’ai pas compris ce qu’est cette méthode…
C’est une méthode sensée être appelée par une action ?
C’est ça ?

Oui, c’est une méthode sensée être appelée par une action.

J’ai une action qui demande l’utilisateur de saisir un nombre. La méthode back de cette action me permet de valoriser un paramètres d’objet.

/*Action : DomsecoFiscalYear 
 Méthod : getFiscalYear
*/
public void getFiscalYear(Map<String,String> params){		
	this.setParameter("PeriodFiscal", params.get("anneesImpositionDialog")); 
}

Ensuite j’ai crée un template de publication de type méthode exactement comme celui qui se trouve sur le demo contacts.

Maintenant, au lieu de cliquer le bouton pour générer le fichier, j’aimerais appeler la publication depuis la
méthode getFiscalYear pour que l’utilisateur puisse télécharge le fichier.

Ok

Les méthodes appelées par les actions renvoient du texte (typiquement des messages ou un “redirect” vers autre chose) mais pas directement un contenu binaire à downloader…

Je vais regarder comment faire pour qu’une action déclenche l’appel d’un print template

Il faut que la méthode d’action retourne un statement de redirect du type:

return this.sendRedirect(HTMLTool.getPrintTemplateURL(this.getName(), this.getInstanceName(), "<nom du print template>"));
1 Like

hello,

Merci pour votre réponse, C’est exactement cela que je cherchais. Par contre, une fois que le fichier excel est téléchargé, la vue (la liste sur laquelle l’action se trouve ) deviens invisible. Est-ce normal ?

  public String getFiscalYear (Map<String,String> params){		
	this.setParameter("PeriodFiscal", params.get("anneesImpositionDialog"));
	try{
		return this.sendRedirect(HTMLTool.getPrintTemplateURL(this.getName(), this.getInstanceName(), "DomsecoPublicationExcel"));
	}catch(Exception e ){
		AppLog.error(getClass(),  e.getStackTrace()[0].getMethodName() , "Exception lors l'invocation de la méthode generateStatistique()", e, getGrant());
	}
	return null;
}

Est-ce que votre template de publication est d’usage “For export” ?

Sinon essayez ça:

return this.javascript("$ui.displayPrint(null, 'DomsecoPublicationExcel', '" + this.getName() + "', '" + this.getRowId() + "')");

Non, le template est d’usage “sur les listes”. J’ai testé en changeant l’usage à “For export”, le problème persiste !!!

Merci David, ce code a résolu le problème. ce ticket peut être clos.

Merci encore !!!

Essayez ma 2ème proposition avec le displayPrint

OK parfait
C’était un cas un peu compliqué…