Bonjour , cette application permet de sélectionner un fichier CSV puis un fichier texte vide et lors de l'appui sur le bouton "OK" , le fichier texte sera rempli par les données situées dans le fichier CSV. On peut ensuite sélectionner autant de fichiers CSV qui seront mis aussi dans le fichier texte sans écraser les informations déja existantes !!!
Source / Exemple :
import java.io.BufferedReader;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileSystemView;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import java.util.Date;
import jxl.*;
import jxl.write.*;
import jxl.write.biff.RowsExceededException;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.StringTokenizer;
import jxl.*;
import jxl.read.biff.BiffException;
/*
* Author : mohamed Jacem
*
*
* I love Tunisia !!!
*
*
* */
public class cert extends JFrame implements ActionListener{
JButton b0 = new JButton("Parcourir");
JButton b1 = new JButton("Parcourir");
JButton b2 = new JButton("OK");
static JTextField tx0 = new JTextField("",10);
static JTextField tx1 = new JTextField("",10);
String src,dst;
public cert(){
super("CSV Organizer version 1.0");
Container contenu = getContentPane();
JPanel P1= new JPanel (new GridLayout(3,3,10,120));
contenu.add(P1);
P1.setBackground(Color.YELLOW);
contenu.setLayout(new GridLayout(1,1));
// Squelette de l'application
JLabel la = new JLabel (" Le chemin du fichier CSV :");
JLabel la11 = new JLabel (" ");
P1.add(la);
JLabel la1 = new JLabel (" ");
P1.add(tx0);
P1.add(b0); // bouton parcourir
JLabel la2 = new JLabel (" Le chemin du fichier TXT :");
P1.add(la2);
P1.add(tx1);
P1.add(b1); // 2éme bouton parcourir
P1.add(la1);
P1.add(b2);
b2.addActionListener(this);
b0.addActionListener(this);
b1.addActionListener(this);
P1.add(la11);
setSize(700,400);
setVisible(true);
}
///***********************
public class FiltreSimple extends FileFilter{
//Description et extension acceptée par le filtre
private String description;
private String extension;
//Constructeur à partir de la description et de l'extension acceptée
public FiltreSimple(String description, String extension){
if(description == null || extension ==null){
throw new NullPointerException("La description (ou extension) ne peut être null.");
}
this.description = description;
this.extension = extension;
}
//Implémentation de FileFilter
public boolean accept(File file){
if(file.isDirectory()) {
return true;
}
String nomFichier = file.getName().toLowerCase();
return nomFichier.endsWith(extension);
}
public String getDescription(){
return description;
}
}
public void actionPerformed (ActionEvent evt){
Object s=evt.getSource();
if (s==b2){
if (tx0.getText()!=null && tx1.getText()!=null)
{
String fileName=tx0.getText();
try {
BufferedReader br = new BufferedReader( new FileReader(tx0.getText()));
BufferedWriter bw = new BufferedWriter(new FileWriter(tx1.getText(),true));
bw.newLine();
bw.write("**********************************************************");
bw.newLine();
bw.write("Fichier => "+tx0.getText());
bw.newLine();
bw.write("**********************************************************");
bw.newLine();
// String strLine = null;
StringTokenizer st = null;
int lineNumber = 0, tokenNumber = 0;
while( (fileName = br.readLine()) != null)
{
lineNumber++;
//break comma separated line using ","
st = new StringTokenizer(fileName, ",");
while(st.hasMoreTokens())
{
//display csv values
tokenNumber++;
String msg = "Line " + lineNumber + " # " + tokenNumber + " # "+ st.nextToken();
System.out.println(msg);
bw.write(msg);
bw.newLine();
}
//reset token number
tokenNumber = 0;
}
bw.newLine();
bw.close();
} // la fin de try
catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} // la fin de Else
}//la fin de 1ére if
if (s==b0)
{
///*************
FileFilter csv = new FiltreSimple("Fichiers CSV",".csv");
///*********************
FileSystemView vueSysteme = FileSystemView.getFileSystemView();
//récupération des répertoires
File home = vueSysteme.getHomeDirectory();
//création dun nouveau filechosser
JFileChooser chooser = new JFileChooser(home);
///*********
chooser.addChoosableFileFilter(csv);
///********
//intitulé du bouton
chooser.setApproveButtonText("Choix du fichier CSV");
//affiche la boite de dialogue
chooser.showOpenDialog(null);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
tx0.setText(chooser.getSelectedFile().getAbsolutePath());
}
}
if (s==b1)
{
///*************
FileFilter txt = new FiltreSimple("Fichiers TXT",".txt");
///*********************
FileSystemView vueSysteme = FileSystemView.getFileSystemView();
//récupération des répertoires
File home = vueSysteme.getHomeDirectory();
//tx0.setEditable(false);
//création dun nouveau filechosser
JFileChooser chooser1 = new JFileChooser(home);
///*********
chooser1.addChoosableFileFilter(txt);
///********
//intitulé du bouton
chooser1.setApproveButtonText("Choix du fichier TXT");
//affiche la boite de dialogue
chooser1.showOpenDialog(null);
if (chooser1.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
{
tx1.setText(chooser1.getSelectedFile().getAbsolutePath());
}
}// la fin de 3éme if
} //la fin d' action performed
public static void main(String[] args) throws RowsExceededException, WriteException {
cert cert1 = new cert();
}
}
Conclusion :
Cette application a été faite dans le cadre d'un stage d'été. Son but principal consiste à mettre plusieurs fichiers CSV dans un fichier texte car ce dernier est manipulable plus facilement que le fichier CSV.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.