Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème écriture JExcel

    4 mai 2012 à 11:25:32

    Bonjour !

    J'ai une appli à faire et qui lit/écrit dans un fichier Excel.
    Pour lire, aucun problème. Mais au moment d'écrire, je n'ai aucun changement et la copie du fichier que j'ai créée pour écrire ne remplace pas le fichier original et est illisible.

    Mon code :
    public void saveChanges (HashMap<String,Boolean> map, String name, String loc)
    {
    	try 
    	{
    		File fSource = new File("D:/Documents/file.xls");
    		File fCopie = new File("D:/Documents/fileBIS.xls");
    			
    		// Ouverture des classeurs
    		Workbook wb = Workbook.getWorkbook(fSource);
    		WritableWorkbook wCopie = Workbook.createWorkbook(fCopie, wb);
    			
    		// Ouverture des feuilles
    		WritableSheet sWP = wCopie.getSheet(0);
    		
    		List<Integer> list = findLineNumber(sWP,name,loc);
    				
    		// Si la liste est vide
    		if (list.isEmpty())
    		{
    			int row = sWP.getRows();
    				
    			// Insérer les éléments en fin de feuille Excel
    			sWP.addCell(new Label(2,row,InterfaceWP.this.textareaName.getText()));
    			sWP.addCell(new Label(3,row,InterfaceWP.this.textAreaLoc.getText()));
    
    		}
    		else
    		{
    			int row = 0;
    			
    			// On modifie les valeurs
    			sWP.addCell(new Label(2,row,InterfaceWP.this.textareaName.getText()));
    			sWP.addCell(new Label(3,row,InterfaceWP.this.textAreaLoc.getText()));
    					
    		}
    		
    		// Fermeture des classeurs et écriture des données
    		wCopie.write();
    		wCopie.close();
    	
    		String nomFich = fSource.getAbsolutePath();
    		fSource.delete();
    		File newFile = new File(nomFich);
    		fCopie.renameTo(newFile);
    	}
    	catch (Exception e)
    	{
    		
    	}
    }
    


    Il s'agit d'une procédure que j'appelle dans un ActionListener. J'utilise ce type de code sans problème pour mes autres fichiers, donc a priori le soucis ne viendrait pas de l'écriture en elle-même.
    Le fichier dans lequel j'écris a au préalable été ouvert en lecture dans un ListSelectionListener pour afficher des informations dans mes textAreas. J'ai pensé que le problème venait du fait que j'essayais d'écrire dans un fichier ouvert et que c'est pour ça qu'il n'arrivait pas à effectuer le traitement.

    J'ai donc essayé de bricoler sans succès le code du actionPerformed et du ListSelectionListener pour récupérer le workbook :

    public class ControleurTable implements ListSelectionListener
    {
    	// Attributs
    	// ...
    
    	public void valueChanged(ListSelectionEvent e) 
    	{
    		// Code
    		// ...
    
    		try 
    		{
    			// Ouverture du classeur et de la feuille
    			InterfaceWP.this.workbook = Workbook.getWorkbook(fSource);
    
    			// Reste du traitement de lecture
    			// ...
    		}
    		catch (Exception e)
    		{
    			//...
    		}
    	}
    }
    


    public class ControleurTextModifications implements DocumentListener, ActionListener
    {
    	// Attributs et méthodes
    	// ...
    
    	public void actionPerformed(ActionEvent e) 
    	{
    		InterfaceWP.this.workbook.close();
    		saveChanges(this.changes,"X122ZRT", "Toulouse", );
    	}
    }
    


    Je commence à sécher sur la provenance et la résolution de mon problème...
    Est-ce que cela viendrait effectivement du fait que j'ouvre le classeur Excel dans le ListSelectionListener, ou est-ce que ça vient de mon code ?

    Merci d'avance pour votre aide ! :)
    • Partager sur Facebook
    • Partager sur Twitter

    Problème écriture JExcel

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown