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

Documents Java Discussion :

Exporter un tableau importer d'un base des données vers PDF


Sujet :

Documents Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Exporter un tableau importer d'un base des données vers PDF
    Bonjour,

    J'ai arrivé à exporter mon JTable vers PDF, mais l'entête ne s'affiche pas et les bordures. J'ai essayé de changer table.print(g2) par scrollpane mais malheureusement si j'ai une vingtaine de ligne ceux qui se trouve en bas de la page ne seront pas visible.
    Nom : Sans titre1.jpg
Affichages : 488
Taille : 20,4 Ko
    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
    76
    77
    78
    79
    80
    81
    82
    Statement stmt = connexion.createStatement();
    					            rs = stmt.executeQuery(sql);
    					            md = rs.getMetaData();
    					            columns = md.getColumnCount();
     
    			           //  Get column names 
    			           for ( int i = 1; i <= columns; i++)
    			           {
    			              titrecolonnes.addElement( md.getColumnName(i) );
    			           }
     
    			           //  Get row data
    			           while (rs.next()) 
    			           {
    			              Vector row = new Vector(columns);
    			              for (int i = 1; i <= columns; i++)
    			              {
    			                 row.addElement(rs.getObject(i));
    			              }
    			              donnee.addElement(row);
    			           }
    			           rs.close();
    			           stmt.close();
     
     
    			          } catch(Exception cnfe)
     
    				   		{
    			   				System.out.println("Error:"+cnfe.getMessage());
    			   				}
     
     
    				 model = new DefaultTableModel (donnee, titrecolonnes)
    			    {
    			    public Class getColumnClass(int columnNames) {
    			        Class returnValue;
    			        if ((columnNames >= 0) && (columnNames < getColumnCount())) {
    			          returnValue = getValueAt(0, columnNames).getClass();
    			        } else {
    			          returnValue = Object.class;
    			        }
    			        return returnValue;
    			      }
    			    };
     
    				table = new JTable(model);
    			    table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    			    sorter = new TableRowSorter<TableModel>(model) ; 
    			    table.setPreferredScrollableViewportSize(new Dimension(780, 200));
    			    scrollPane = new JScrollPane((table));
    			    table.setRowSorter (sorter) ;
    			    add(scrollPane);
    			    scrollPane.setBounds(15, 180, 780, 240);
    			    table.setIntercellSpacing(new Dimension(2, 2));
    			    table.setRowHeight(28);
     
    Document document = new Document(PageSize.A4.rotate());
    		    try {
    		      PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("E:\\Liste impayé.pdf"));
     
    		      document.open();
    		      PdfContentByte cb = writer.getDirectContent();
     
    		      cb.saveState();
    		      Graphics2D g3 = cb.createGraphics(780, 520);
     
    		      Shape oldClip = g3.getClip();
    		      g3.clipRect(05, 0, 760,600);
     
    		      table.print(g3);
     
    		      g3.setClip(oldClip);
     
    		      g3.dispose();
    		      cb.restoreState();
    		      JOptionPane.showMessageDialog(null, "Le tableau a été exporté vers PDF avec succès");
    		    } catch (Exception e) {
    		      System.err.println(e.getMessage());
    		      JOptionPane.showMessageDialog(null, "Le processus ne peut pas accéder au fichier car ce fichier est utilisé par un autre utilisateur."," Erreur", JOptionPane.ERROR_MESSAGE);
    		    }
    		    document.close();
    		  }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Une JTable est un composant d'affichage : s'en servir autrement que pour un affichage est déjà une bidouille. D'autant plus pour se servir de sa méthode print(Graphics) pour générer un PDF : ça aussi c'est de la bidouille. On peut y arriver, mais il faut pousser la bidouille jusqu'au bout (S'arranger à la main pour que le pdf ait la bonne taille, ou gérer à la main la pagination (pas simple du tout), et surtout encapsuler la JTable et son entête dans un JPanel (qu'on dimensionne à la main) et imprimer ce JPanel (avec un JScrollPane, on n'aura forcément pas toutes les lignes affichées, donc pas plus imprimées). Je sais bien qu'on trouve ce genre de code (sur Java2s par exemple) mais comme c'est de la bidouille, on ne peut pas faire la moindre modification sans savoir comment ça fonctionne et faire toutes les modifications conséquentes.

    C'est infiniment plus simple et plus propre que de générer une PdfPTable : voir exemple ici http://itextpdf.com/examples/iia.php?id=75.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Djibouti

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    ça fonctionne mais je n'arrive pas à modeler ce code avec ma JTable.

Discussions similaires

  1. Edition base de données vers PDF
    Par theo16 dans le forum Jasper
    Réponses: 1
    Dernier message: 16/02/2014, 16h42
  2. Exporter des données vers une base de données Oracle
    Par sellamelie dans le forum MATLAB
    Réponses: 3
    Dernier message: 26/08/2009, 16h07
  3. Export et Import d'une base de données
    Par hbellahc dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2007, 21h28
  4. Réponses: 2
    Dernier message: 25/06/2006, 20h06
  5. [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

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