exporter un fichier au format csv et Excel
Bonjour tout le monde,
j'aimerai exporter un fichier au format csv selon certains critere renseigner par l'utilisateur.
voila ce que j'ai deja fait mais cela me renvoie une page blanche.
Code:
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
public String exportCSV( HttpServletRequest request, HttpServletResponse response){
try {
String type = (String) request.getAttribute("type");
String dateDebut = (String) request.getAttribute("dateDebut");
String dateFin = (String) request.getAttribute("dateFin");
if (type == null || type.equals("0")) {
return null;
}
File fileRep = new File(Contexte.getInstance().getCheminApplication() + "log");
// Créer le répertoire de log si inexistant
if (!fileRep.exists()) {
fileRep.mkdir();
}
File fileLog = new File(fileRep, "journal.log");
String nomRapport = fileLog.getName();
nomRapport = nomRapport.substring(0, nomRapport.indexOf("."));
PrintWriter pt = response.getWriter();
FileInputStream fr = new FileInputStream(fileLog);
BufferedReader br = new BufferedReader(new InputStreamReader(fr, Encodage.UTF8));
String lignelu = br.readLine(); // lire une 1ere ligne
while (lignelu != null) { // tant qu'il ya des lignes
// System.out.println("lignelu"+lignelu);
StringTokenizer strt = new StringTokenizer(lignelu, ";"); //recuperer la ligne sous forme de token separer par un ;
String typeLigne = strt.nextToken(); // on prend le type sous forme de code
System.out.println("typeLigne"+typeLigne);
String typeAction = strt.nextToken();
String dateRecup = strt.nextToken(); // on récupère la date de la ligne
dateRecup = dateRecup.substring(7,11) + dateRecup.substring(3, 7) + dateRecup.substring(1, 3); // on la convertie en yyyy/MM/dd
System.out.println("daterecup: " + dateRecup);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date dd = null, df = null, dr;
dr = sdf.parse(dateRecup);
if(dateDebut.length()>0){
dd = sdf.parse(dateDebut);
}
if(dateFin.length()>0){
df = sdf.parse(dateFin);
}
System.out.println("dateDebut converti: "+dd);
System.out.println("dateDebut converti: "+df);
if ( (type.equals("4") || typeLigne.equals(type)) && ((dateDebut.equals("")||!dr.before(dd)) && (dateFin.equals("")||!dr.after(df))) ){ //si le type de la ligne du fichier correspond au type rechercher
// et si la date de debut contient rien ou date debut est <= dateDebut // et si la date fin contient rien ou la date fin est >= dateFin
dateRecup = dateRecup.substring(8) + dateRecup.substring(4, 8) + dateRecup.substring(0, 4);
System.out.println("dateRecup"+dateRecup);
pt.print("<tr class='texte_liste'>"); //imprimer la balise d'ouverture d'une ligne dans un tableau
pt.print("<td class='entetelisteb'><div align='center'>"+ typeAction +"</div></td>");
pt.print("<td class='entetelisteb'><div align='center'>"+ dateRecup +"</div></td>");
System.out.println("un type trouvée compris dans la periode");
while (strt.hasMoreTokens()) { // tant qu'il ya des tokens
pt.print("<td class='entetelisteb'><div align='center'>" + strt.nextToken() + "</div></td>");
}
pt.print("</tr>");
}
lignelu = br.readLine();// relire une nouvelle ligne
}
fr.close();
if (type.equals("csv")) {
ecrireFichierDansFluxReponse(response, nomRapport, fileLog, "text/csv", true);
}
}
catch (Exception e) {
traiterErreur(request, response, e);
}
return null;
} |
ma jsp:
Code:
1 2 3 4 5 6 7 8
|
...
<input type="image" src="${pageContext.request.contextPath}/work/images/csv_logo.gif" width="20" height="17" onclick = "javascript:doAction('adminJournal.exportCSV','form1','nomMethod')" title="<fmt:message key="admin.journalActions.btnExportCSV.bulle"/>">
<input type="image" src="${pageContext.request.contextPath}/work/images/excel_logo.gif" width="20" height="17" onclick = "javascript:doAction('adminJournal.exportExcel','form1','nomMethod')" title="<fmt:message key="admin.journalActions.btnExportExcel.bulle"/> ">
... |
quelqu'un a t-il un retour d'expérience ou une solution a me proposer ?
merci d'avance