IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

Exporter des données vers un .CSV


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Par défaut Exporter des données vers un .CSV
    salut, je développe une petite application avec struts qui consiste a extraire des données de ma base et les enregistré dans un fichier csv . le probleme c'est que lorsque le fichier est crée il est vide il n'y a aucun enregistrement.
    dans l'action :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     public ActionForward load(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
        {
            IterfacagecaisseActionForm fb = (IterfacagecaisseActionForm)form;
            ArrayList listAntenne = new ArrayList();
            listAntenne = (ArrayList)request.getAttribute("listAntenne");
            String userRole = (String)request.getAttribute("userRole");
            Date date = new Date();
            Calendar dateCalendar = new GregorianCalendar();
            dateCalendar.setTimeInMillis(date.getTime());
            String jour;
            if(dateCalendar.get(5) < 10)
            {
                jour = (new StringBuilder("0")).append(dateCalendar.get(5)).toString();
            } else
            {
                jour = (new StringBuilder()).append(dateCalendar.get(5)).toString();
            }
            String mois;
            if(dateCalendar.get(2) + 1 < 10)
            {
                mois = (new StringBuilder("0")).append(dateCalendar.get(2) + 1).toString();
            } else
            {
                mois = (new StringBuilder()).append(dateCalendar.get(2) + 1).toString();
            }
            String annee = (new StringBuilder()).append(dateCalendar.get(1)).toString();
            fb.setJour(jour);
            fb.setMois(mois);
            fb.setAnnee(annee);
            fb.setUserRole(userRole);
            fb.setListAntenne(listAntenne);
            System.out.println("InterfacagecaisseActionAction : load");
            return mapping.findForward("interfacage_caisse");
        }
     
        public ActionForward generate(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
        {
            IterfacagecaisseActionForm fb = (IterfacagecaisseActionForm)form;
            System.out.println("InterfacagecaisseActionAction : generate");
            try
            {
                String antenne = fb.getAntenne();
                String date_generation = (new StringBuilder(String.valueOf(fb.getAnnee()))).append("-").append(fb.getMois()).append("-").append(fb.getJour()).toString();
                CsvWriter CMTracewriter = new CsvWriter(new PrintWriter(new OutputStreamWriter(new FileOutputStream("c:/CMTrace.csv"), Charset.forName("UTF-8"))), '!');
                GenerateFileManager.generate_disbursaleLoan(CMTracewriter, antenne, date_generation);
                GenerateFileManager.generate_payment(CMTracewriter, antenne, date_generation);
                GenerateFileManager.generate_adjustment(CMTracewriter, antenne, date_generation);
                GenerateFileManager.generate_fees(CMTracewriter, antenne, date_generation);
                CMTracewriter.flush();
                CMTracewriter.close();
                response.setContentType("text/csv");
                response.addHeader("Content-Disposition", "filename=\"CMTrace.csv\"");
                try
                {
                    File uFile = new File("c:/CMTrace.csv");
                    int fSize = (int)uFile.length();
                    FileInputStream fis = new FileInputStream(uFile);
                    PrintWriter pw = response.getWriter();
                    for(int c = -1; (c = fis.read()) != -1;)
                    {
                        pw.print((char)c);
                    }
     
                    fis.close();
                    pw.flush();
                    pw = null;
                }
                catch(Exception exception) { }
            }
            catch(IOException ex)
            {
                System.out.println((new StringBuilder("probleme envoi fichier, erreur=")).append(ex.getMessage()).toString());
            }
            return mapping.findForward("interfacage_caisse");
        }
    et dans la classe qui génère le resultat de mes requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     public static void generate_disbursaleLoan(CsvWriter CMTracewriter, String antenne, String date_generation)
            throws IOException
        {
            JDBCAdapter adapter = new JDBCAdapter();
            try
            {
                System.out.println("generate_disbursaleLoan");
                adapter.getConnection();
                for(ResultSet rs_loanAccount = adapter.executeQuery((new StringBuilder("SELECT * FROM loan_trxn_detail l,account_trxn a,account ac,office o where ac.acc" +
    "ount_id=a.account_id and l.ACCOUNT_TRXN_ID=a.ACCOUNT_TRXN_ID and l.PRINCIPAL_AMO" +
    "UNT > 0 and ac.OFFICE_ID=o.OFFICE_ID and o.DISPLAY_NAME='"
    )).append(antenne).append("' and ac.CREATED_DATE='").append(date_generation).append("'").toString()); rs_loanAccount.next(); CMTracewriter.endRecord())
                {
                    System.out.println("rs_loanAccount");
                    CMTracewriter.write(rs_loanAccount.getString("ACCOUNT_ID"));
                    CMTracewriter.write(rs_loanAccount.getString("GLOBAL_ACCOUNT_NUM"));
                    CMTracewriter.write(rs_loanAccount.getString("ACTION_DATE"));
                    CMTracewriter.write("");
                    CMTracewriter.write("");
                    CMTracewriter.write("1");
                    CMTracewriter.write("");
                    CMTracewriter.write(rs_loanAccount.getString("PRINCIPAL_AMOUNT"));
                    CMTracewriter.write("");
                    CMTracewriter.write("0");
                    CMTracewriter.write(rs_loanAccount.getString("ACTION_DATE"));
                    CMTracewriter.write("");
                    CMTracewriter.write("");
                    for(ResultSet rs_customer = adapter.executeQuery((new StringBuilder("SELECT DISPLAY_NAME FROM CUSTOMER,ACCOUNT WHERE CUSTOMER.CUSTOMER_ID=ACCOUNT.CUS" +
    "TOMER_ID AND ACCOUNT_ID='"
    )).append(rs_loanAccount.getString("ACCOUNT_ID")).append("'").toString()); rs_customer.next(); CMTracewriter.write(rs_customer.getString("DISPLAY_NAME"))) { }
                    CMTracewriter.write("");
                    CMTracewriter.write("0");
                    CMTracewriter.write("");
                    CMTracewriter.write("0");
                }
     
                CMTracewriter.flush();
                System.out.println("generate_disbursaleLoan complete...");
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
    merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 226
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 226
    Par défaut
    As tu utilisé le mode debugger pour voire d'ou vient ton erreur ?
    pour voire si ta requete est bonne ?

    sauf erreur de ma part, je pense que Java est ton premier langage car je vois que tu n'utilise pas de variable pour stocker ta variable. C'est une tres tres mauvaise pratique. En la stockant dans une variable, tu peux controler facillement si celle que tu attends.

  3. #3
    Membre confirmé
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Par défaut
    Citation Envoyé par weed Voir le message
    As tu utilisé le mode debugger pour voire d'ou vient ton erreur ?
    pour voire si ta requete est bonne ?

    sauf erreur de ma part, je pense que Java est ton premier langage car je vois que tu n'utilise pas de variable pour stocker ta variable. C'est une tres tres mauvaise pratique. En la stockant dans une variable, tu peux controler facillement si celle que tu attends.
    oui j'ai bien testé la requete est c bon elle m'affiche bien les données.

  4. #4
    Membre confirmé
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2008
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2008
    Messages : 211
    Par défaut
    Citation Envoyé par weed Voir le message

    sauf erreur de ma part, je pense que Java est ton premier langage car je vois que tu n'utilise pas de variable pour stocker ta variable. C'est une tres tres mauvaise pratique. En la stockant dans une variable, tu peux controler facillement si celle que tu attends.
    tu parles du quelle variable ici?
    en tout cas j'ai bien résolu le probleme qui a été lié a l'ecriture dans le fichier donc dans le CSV writer.

  5. #5
    Membre éprouvé

    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 226
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 226
    Par défaut
    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(ResultSet rs_loanAccount = adapter.executeQuery((new StringBuilder("SELECT * FROM loan_trxn_detail l,account_trxn a,account ac,office o where ac.acc" +
    "ount_id=a.account_id and l.ACCOUNT_TRXN_ID=a.ACCOUNT_TRXN_ID and l.PRINCIPAL_AMO" +
    "UNT > 0 and ac.OFFICE_ID=o.OFFICE_ID and o.DISPLAY_NAME='"
    )).append(antenne).append("' and ac.CREATED_DATE='").append(date_generation).append("'").toString()); rs_loanAccount.next(); CMTracewriter.endRecord())
                {
    j'ai fais une recherche sur stringBuilder. Cela doit etre une classe personnelle qui concatène une chaine de caratère. En codant, ainsi, tu n'as aucune idée de ce que renvoie StringBuilder avec le debuggeur d'Eclipse. Tu ne peux donc tester le résultat dans un client SQL en faisant un bete copié collé de la requete généré par StringBuilder.

    Autre remarque :
    En plus de passer une variable intermédiaire pour tester la valeur pour le debuggage, tu gagnerais en visibilité parce que c'est un peu le bordel dans ta boucle for. Je comprenais pas ce que venais faire 2 instructions sur la meme ligne : rs_loanAccount.next(); CMTracewriter.endRecord(). En fait c'est le 2ème et 3ème parametres de la boucle for. Ca saute pas aux yeux, il faut s'y prendre plusieurs fois ....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DELPHI6] Comment exporter des données vers un fichier XML ?
    Par zoaax dans le forum Bases de données
    Réponses: 1
    Dernier message: 06/10/2006, 15h58
  2. exporter des données vers un fichier text
    Par JauB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/07/2006, 21h36
  3. [Access 2002] Exporter des données vers une base Access 2.0
    Par SamLeChiseuji dans le forum Access
    Réponses: 27
    Dernier message: 01/06/2006, 11h41
  4. [En cours]Exporter des données vers Excel
    Par Muhad'hib dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/01/2006, 14h25
  5. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo