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 :

Afficher une feuille excel à partir d'une ligne spécifique


Sujet :

Documents Java

  1. #61
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Points : 96
    Points
    96
    Par défaut
    Oui, j'utilise pack() et ne je fait jamais de preferentSize(), c'est tout automatisé avec pack()

  2. #62
    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
    Attention AUTO_RESIZE_ALL_COLUMNS ne permet pas aux colonnes d'ajuster leur taille à leur contenu : il s'agit d'un mode de redimensionnement automatique lorsque la taille de la JTable change (ici toutes les colonnes s'agrandissent ou se rapetissent proportionnellement). On peut trouver des composants qui font ça (TableColumnAjuster).
    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. #63
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Points : 96
    Points
    96
    Par défaut
    J'ai trouvé :
    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
     
    spreadsheet.setAutoResizeMode( JTable.AUTO_RESIZE_OFF ); 
    	for (int column = 0; column < spreadsheet.getColumnCount(); column++)
    	{
    	    TableColumn tableColumn = spreadsheet.getColumnModel().getColumn(column);
    	    int preferredWidth = tableColumn.getMinWidth();
    	    int maxWidth = tableColumn.getMaxWidth();
     
    	    for (int row = 0; row < spreadsheet.getRowCount(); row++)
    	    {
    	        TableCellRenderer cellRenderer = spreadsheet.getCellRenderer(row, column);
    	        Component c = spreadsheet.prepareRenderer(cellRenderer, row, column);
    	        int width = c.getPreferredSize().width + spreadsheet.getIntercellSpacing().width;
    	        preferredWidth = Math.max(preferredWidth, width);
     
    	        //  We've exceeded the maximum width, no need to check other rows
     
    	        if (preferredWidth >= maxWidth)
    	        {
    	            preferredWidth = maxWidth;
    	            break;
    	        }
    	    }
    	    tableColumn.setPreferredWidth( preferredWidth );

  4. #64
    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
    Oui, tu pouvais aussi le faire toi-même.
    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.

  5. #65
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Points : 96
    Points
    96
    Par défaut
    Euh je viens de voir un petit truc, quand je refais un ajouter fichier il me génère les onglets à la suite au lieu de tout renouveler puis ré-créer :
    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
     
    private void btnLoad_click() {
    	FileChooser fc = new FileChooser();
    	Component tabHDMT = IhmConverter.getHDMT();
    	File selectedFile;
    	try {
    		tabHDMT.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    		boolean filled = false;
    		int i = 0;
    		do {
    			// DBS message after the first selection
    			if (i > 0) {
    				JOptionPane
    						.showConfirmDialog(null, Final.getMsgDBS(),
    								Final.getMsgDBSTitle(),
    								JOptionPane.WARNING_MESSAGE);
    			}
    			// choose a file
    			selectedFile = fc.fileChooser();
    			if (selectedFile != null) {
    				// create the tabs
    				filled = utiMethods.populateJTabbedPane(selectedFile);
    			}
    			i++;
    		} while (selectedFile != null && !filled);
    	} finally {
    		// when is wait off
    		tabHDMT.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    	}
    }

  6. #66
    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
    Il y a avait un removeAll() à un moment, que tu as du virer par inadvertance, ou déplacer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Component tabHDMT = IhmConverter.getHDMT();
    tabHDMT.removeAll()
    devrait suffire.
    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.

  7. #67
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Points : 96
    Points
    96
    Par défaut
    Vu que j'ai déjà le titre pour la ligne "dbs" j'aimerai ne pas le reprendre, car comme je l'ai là, il met le titre suivie de la même ligne suivit de la suite donc mes 2 premières lignes sont le même et je voudrais éviter cela.
    Est-ce que je dois faire comme avec le hideColumn ? ou je peux faire un +1 à un moment donné ?

  8. #68
    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
    Dans sheetToJtable, il suffit d'ajouter un continue, qui va aller directement à la fin du bloc de l'itération, ainsi le if (index >= 0) ne sera exécuté qu'à partir l'itération suivante. Ce n'est pas terrible pour la compréhension du fonctionnement de la boucle, mais c'est encore le plus simple car il n'y a qu'une ligne à ajouter et rien changer d'autre (sinon, il faudrait un booléen, ou jouer sur la valeur de index, ou changer la structure des if comme dans la solution suivante).

    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
    // recovery of adequate lines
    		final Object[][] recorvery = new Object[nbRows][nbColumns];
    		int index = -1; // indicates the index of the next line to recover, except of -1
    		int hideColumn = 0; //memorize the DBS column for hide it
    		for (int i = 0; i < nbRows; i++) {
    			if (index < 0) { // we found nothing, so we are searching
    				for (int j = 0; j < nbColumns; j++) {
    					if ("dbs".equals(obj[i][j])) { // we found a line that contains "dbs"
    						index = 0;
    						hideColumn = j;
    						break; // needn't to search in this line
    					}
    				}
    				if (index == 0) { // the first line including "dbs" : the headers 
    					// Recovering the headers
                                            header = new String[nbColumns-1];
    					for (int j = 0, col=0; j < nbColumns; j++) {
                                                    if ( j!=hideColumn ) {
    						   header[col++] = String.valueOf(obj[i][j]);
                                                    }
    					} 
                                            continue; // do not repeat title in data
    				}
    			}
     
    			if (index >= 0) { // we found a line that contained "dbs", then copy
    				// copy the lines after the first that contains "dbs" including this one
    				for (int j = 0; j < nbColumns; j++) { // copy the full line
    					recorvery[index][j] = obj[i][j];
    				}
    				index++; // we advance in the recovery table
    			}
     
    		}
    Du coup, comme la ligne index==0 n'a pas besoin d'être traitée dans l'itération où elle est détectée, on peut aussi faire (c'est plus propre, plus de continue) :

    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
    // recovery of adequate lines
    		final Object[][] recorvery = new Object[nbRows][nbColumns];
    		int index = -1; // indicates the index of the next line to recover, except of -1
    		int hideColumn = 0; //memorize the DBS column for hide it
    		for (int i = 0; i < nbRows; i++) {
    			if (index < 0) { // we found nothing, so we are searching
    				for (int j = 0; j < nbColumns; j++) {
    					if ("dbs".equals(obj[i][j])) { // we found a line that contains "dbs"
    						index = 0;
    						hideColumn = j;
    						break; // needn't to search in this line
    					}
    				}
    				if (index == 0) { // the first line including "dbs" : the headers 
    					// Recovering the headers
                                            header = new String[nbColumns-1];
    					for (int j = 0, col=0; j < nbColumns; j++) {
                                                    if ( j!=hideColumn ) {
    						   header[col++] = String.valueOf(obj[i][j]);
                                                    }
    					}  
    				}
    			} else { // we found a line that contained "dbs", then copy
    				// copy the lines after the first that contains "dbs" including this one
    				for (int j = 0; j < nbColumns; j++) { // copy the full line
    					recorvery[index][j] = obj[i][j];
    				}
    				index++; // we advance in the recovery table
    			}
     
    		}
    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.

  9. #69
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 213
    Points : 96
    Points
    96
    Par défaut
    Ok merci
    J'ai trouvé mieux côté taille des colonnes avec ce code :
    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
     
    // spreadsheet column adjust
    int col = 0, larg = 0, row = 0, tableX = 0, width = 0;
    JTableHeader header = spreadsheet.getTableHeader();
    Enumeration<TableColumn> columns = spreadsheet.getColumnModel()
    		.getColumns();
     
    spreadsheet.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    while (columns.hasMoreElements()) { // maximum length of the text or title of a column
    	TableColumn column = (TableColumn) columns.nextElement();
    	col = header.getColumnModel().getColumnIndex(
    		column.getIdentifier());
    	width = (int) spreadsheet
    		.getTableHeader()
    		.getDefaultRenderer()
    		.getTableCellRendererComponent(spreadsheet,
    			column.getIdentifier(), false, false,
    			-1, col).getPreferredSize().getWidth();
    	for (row = 0; row < spreadsheet.getRowCount(); row++) {
    		int preferedWidth = (int) spreadsheet
    			.getCellRenderer(row, col)
    			.getTableCellRendererComponent(spreadsheet,
    				spreadsheet.getValueAt(row, col),
    				false, false, row, col)
    					.getPreferredSize().getWidth();
    		width = Math.max(width, preferedWidth);
    	}
    	header.setResizingColumn(column);
    	larg = width + spreadsheet.getIntercellSpacing().width;
    	larg = larg + 20;
    	column.setWidth(larg);
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 4 sur 4 PremièrePremière 1234

Discussions similaires

  1. Réponses: 24
    Dernier message: 15/10/2007, 14h41
  2. Réponses: 1
    Dernier message: 05/03/2007, 20h10
  3. Réponses: 2
    Dernier message: 04/10/2006, 10h45
  4. [VBA]Renseigner une feuille excel à partir d'un site web
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/01/2006, 13h43
  5. Réponses: 5
    Dernier message: 05/07/2005, 20h25

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