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

JDBC Java Discussion :

Extraire des données d'Oracle vers Excel via JDBC


Sujet :

JDBC Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut Extraire des données d'Oracle vers Excel via JDBC
    Salut,

    Je suis nouvel utilisateur de java(avec eclipse)
    et j'essai de faire un programme qui me permette d'extraire des données d'une table oracle vers un fichier excel.
    (si vous avez des exemples je suis preneur.

    Je viens de trouver un code qui permet de se connecter à une base oracle et de faire une requête mais j'ai un soucis et je ne comprends pas pourquoi ?

    Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at export_data.create_excel.main(create_excel.java:24)
    Hello
    le code en question :
    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    package export_data;
     
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
     
    public class create_excel {
     
    	private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
    	private static final String DB_CONNECTION = "jdbc:oracle:thin:@localhost:1521:TEST";
    	private static final String DB_USER = "test";
    	private static final String DB_PASSWORD = "test";
     
     
    	public static void  main(String[] args) throws ClassNotFoundException {
    		// TODO Auto-generated method stub
    		System.out.println("Hello");
    // start 
    		try {
     
    			 Class.forName ("oracle.jdbc.driver.OracleDriver");
     
    			selectRecordsFromTable();
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
     
     
     
    	// end
    	}
     
    	private static void selectRecordsFromTable() throws SQLException {
     
    		Connection dbConnection = null;
    		PreparedStatement preparedStatement = null;
     
    		String selectSQL = "SELECT * FROM DUAL";
     
    		try {
    			dbConnection = getDBConnection();
    			preparedStatement = dbConnection.prepareStatement(selectSQL);
    			preparedStatement.setInt(1, 1001);
     
    			// execute select SQL stetement
    			ResultSet rs = preparedStatement.executeQuery();
     
    			while (rs.next()) {
     
    				String userid = rs.getString("USER_ID");
    				String username = rs.getString("USERNAME");
     
    				System.out.println("userid : " + userid);
    				System.out.println("username : " + username);
     
    			}
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		} finally {
     
    			if (preparedStatement != null) {
    				preparedStatement.close();
    			}
     
    			if (dbConnection != null) {
    				dbConnection.close();
    			}
     
    		}
     
    	}
     
     
     
    	private static Connection getDBConnection() {
     
    		Connection dbConnection = null;
     
    		try {
     
    			Class.forName(DB_DRIVER);
     
    		} catch (ClassNotFoundException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
    		try {
     
    			dbConnection = DriverManager.getConnection(
                                 DB_CONNECTION, DB_USER,DB_PASSWORD);
    			return dbConnection;
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
    		return dbConnection;
     
    	}
     
    //end create_excel
    }
    Merci à tous.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu as oublié d'ajouter le driver Oracle à ton programme. Il y a de la doc là dessus dans la FAQ jdbc du site.

  3. #3
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    donc si je comprends bien il faut que je télécharge un driver jdbc pour oracle.
    Je suis allé sur la faq
    http://java.developpez.com/faq/jdbc/...argementDriver

    c'est dommage il n'indique pas de lien,
    donc je suis allé ici
    http://www.oracle.com/technetwork/da...10-090769.html

    j'ai téléchargé ojdbc6 mais impossible de l'installé.

    PS : je suis sous Windows 8 et j'ai java 1.7

  4. #4
    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

    pour Java 7, charge le driver ojdbc7 !
    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. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Melvine Voir le message
    j'ai téléchargé ojdbc6 mais impossible de l'installé.
    ojdbc6 devrait suffire. Pas besoin d'aller jusque ojdbc7, d'autant plus que plus on monte dans les chiffres, moins les vieilles bases de données oracles sont supportées et c'est retro compatible de toutes façons.

    Qu'est-ce que tu entends pas "installer"?? As-tu bien rajouté ce jar à ton projet?

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		String selectSQL = "SELECT * FROM DUAL";
     
    		try {
    			dbConnection = getDBConnection();
    			preparedStatement = dbConnection.prepareStatement(selectSQL);
    			preparedStatement.setInt(1, 1001);
    Ta requête n'a pas de paramètre or que tu l'affectes un Integer.

    A+.

  7. #7
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Bonjour
    Citation Envoyé par Melvine Voir le message
    j'ai téléchargé ojdbc6 mais impossible de l'installé.
    Un driver est un programme java comme un autre pour l'utiliser pas besoin de l'installer, mais juste l'ajouter au CLASSPATH

    Edit :

    Comme souligné par tchize_ la solution dont je parlais est la 2 qui utilise -cp ou -classpath.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Note que cette entrée de la FAQ est ambigue et dangereuse. Ne jamais, autant que possible, modifier la variable d'environnement CLASSPATH, qu'il ne faut pas confondre avec le classpath. CLASSPATH défini un ensemble de librairies / dossier utilisé par défaut par toutes les applications, le second est le nom qu'on donne à l'ensemble des classes et ressources visibles par une application java données. Le classpath peux dériver de CLASSPATH, mais pas nécessairement, et il est inutile d'aller modifier CLASSPATH pour résoudre un problème lié au classpath.

    D'ailleurs, si t'as un IDE (netbeans, eclipse, ...), il se cahrge de gérer le classpath de ton projet tout seul

  9. #9
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    Merci tchize_ de le souligné effectivement quand je parlais de l'ajouter au CLASSPATH je pensais a la solution 2 décrite dans la FAQ qui utilise le -cp ou -classpath.

    J’édite le post pour le préciser
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    merci je l'ai ajouté au CLASSPATH
    du coup je n'ai plus l'erreur.

    J'ai un autre soucis,
    Hello
    Erreur d'E/S: The Network Adapter could not establish the connection
    Exception in thread "main" java.lang.NullPointerException
    at export_data.create_excel.selectRecordsFromTable(create_excel.java:49)
    at export_data.create_excel.main(create_excel.java:26)
    Je pense que c'est un soucis de configuartion car avec sqlplus ou tora ,
    j'arrive à me connecter à la base.

    en dehors du jdk, sdk, jre ... je n'ai besoin d'installer rien d'autre ?

  11. #11
    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,

    dans ton url de connexion, au lieu de mettre localhost, essayes mettre 127.0.0.1.
    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.

  12. #12
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    je l'ai modifié mais toujours le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private static final String DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:TEST";

  13. #13
    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
    Tu es sur du port et du nom de la base ?
    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.

  14. #14
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    merci
    je viens de trouver juste avant de lire ton commentaire joel,
    tu avais bon, c'est le port.

    en faisant un tnsping test,
    je me suis rendu compte que le port n'était pas 1521 mais 1522.
    Je pensai que par défaut le port était 1521.
    D'ailleurs je ne comprends pas, dans mon fichier tnsname,
    le port est à 1521.

    Tentative de contact de (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localh
    ost)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test)))
    OK (10 msec)

  15. #15
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    j'ai modifié le code pour pouvoir écrire dans un fichier excel,
    mais je comprends pas pourquoi cela ne fonctionne pas.
    Je m'explique,
    il n'y a qu'une seule cellule du fichier excel qui est rempli à savoir la cellule A2.

    j'ai une classe principale :

    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
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
     
    package export_data;
     
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
     
     
    import java.io.File;
    import java.io.IOException;
     
     
     
    public class create_excel {
     
    	private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
    	private static final String DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1522:adk";
    	private static final String DB_USER = "test";
    	private static final String DB_PASSWORD = "test";
     
     
    	public static void  main(String[] args) throws ClassNotFoundException {
    		// TODO Auto-generated method stub
    		System.out.println("Hello");
     
     
     
    		// start 
    		try {
     
    			// Class.forName ("oracle.jdbc.driver.OracleDriver");
     
    			selectRecordsFromTable();
     
     
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
     
     
     
    	// end
    	}
     
    	private static void selectRecordsFromTable() throws SQLException {
     
    		Connection dbConnection = null;
    		PreparedStatement preparedStatement = null;
    		ecrire_excel cree = new ecrire_excel();
    		cree.create_file("X:\\Utilisateurs\\pep\\Desktop\\test.xls");
     
    		String selectSQL = "select distinct table_name from all_tab_columns where owner='TEST'";
    		String selectSQL2 = "select * from test";
    		try {
    			dbConnection = getDBConnection();
    			preparedStatement = dbConnection.prepareStatement(selectSQL2);
     
     
    			// execute select SQL stetement
    			ResultSet rs = preparedStatement.executeQuery();
     
     
    			/*Statement st = dbConnection.createStatement();
    			// Active le curseur.
    			st.setFetchSize(50);
    			ResultSet rs1 = st.executeQuery("SELECT * FROM test");
    			while (rs1.next()) {
    			   System.out.println("une ligne a été renvoyée." );
    			}
    			rs1.close();*/
     
     
     
    			/*String[] noms = getNomsColonnes(rs);
    			for(int i = 0; i < noms.length; i++){
    			   System.out.print(noms[i] + " ,");
    			}*/
     
    		int i = 1;
    			while (rs.next()) {
     
     
     
    				//System.out.println(" ICI --> " + rs.getString(3));
     
    				//String id = rs.getString("TABLE_NAME");
    				//String attribute = rs.getString("COLUMN_ID");
    				//String complex = rs.getString("OWNER");
     
    				/*System.out.print("id : " + id + " ");
    				System.out.print("attribute : " + attribute + " ");
    				System.out.println("complex : " + complex);*/
     
    				ResultSetMetaData metadata = rs.getMetaData();
    				int nombreColonnes = metadata.getColumnCount();
    				//int nbligne = metadata.getColumnName(column)
    				//System.out.println("Ce ResultSet contient "+nombreColonnes+" colonnes.");
    				String vv = "";
    				for(int j = 1; j <= nombreColonnes ; j++){
    					vv = vv + rs.getString(j) + "|";	
    					cree.write_file(nombreColonnes,rs.getString(j),i,j);
    				}
    				vv = vv.substring(0,vv.length() - 1);
    				//System.out.println(vv);
     
     
    			i = i + 1;
    			}
     
    			cree.ferme();
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		} finally {
     
    			if (preparedStatement != null) {
    				preparedStatement.close();
    			}
     
    			if (dbConnection != null) {
    				dbConnection.close();
    			}
     
    		}
     
    	}
     
     
     
    	private static Connection getDBConnection() {
     
    		Connection dbConnection = null;
     
    		try {
     
    			Class.forName(DB_DRIVER);
     
    		} catch (ClassNotFoundException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
    		try {
     
    			dbConnection = DriverManager.getConnection(
                                 DB_CONNECTION, DB_USER,DB_PASSWORD);
    			return dbConnection;
     
    		} catch (SQLException e) {
     
    			System.out.println(e.getMessage());
     
    		}
     
    		return dbConnection;
     
    	}
     
     
     
    	public static String[] getNomsColonnes(ResultSet resultat) throws SQLException{
    		   ResultSetMetaData metadata = resultat.getMetaData();
    		   String[] noms = new String[metadata.getColumnCount()];
    		   for(int i = 0; i < noms.length; i++){
    		      String nomColonne = metadata.getColumnName(i+1);
    		      noms[i] = nomColonne;
    		   }
    		   return noms;
    		}
     
     
     
     
    	//end create_excel
    }
    et une classe excel

    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
     
    package export_data;
     
    import java.io.File;
    import java.io.IOException;
     
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.Number;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;
    import jxl.write.WriteException;
    import jxl.write.biff.RowsExceededException;
     
    public class ecrire_excel {
    	WritableWorkbook workbook = null;
    	public void create_file (String path) {
     
    	try {
     
    		workbook = Workbook.createWorkbook(new File(path));
     
     
    	} 
    	catch (IOException e) {
    		e.printStackTrace();
    	} 
     
    	}
     
    	public void write_file (int nbcol,String chaine,int i,int j){
     
    WritableSheet sheet = workbook.createSheet("test", 0); 
     
    System.out.println("chaine i  " + i);
    System.out.println("chaine j  " + j);
    System.out.println("chaine    " + chaine);
     
    try
    {
     
     
    			Label var = new Label(j-1,i,chaine);
    			sheet.addCell(var); 
     
    		workbook.write(); 		
    		}
    catch (WriteException e) {
    	e.printStackTrace();
    } catch (IOException e) {
    	// TODO Auto-generated catch block
    	e.printStackTrace();
    }
     
    	}
     
     
    	public void ferme(){
    		try {
    			workbook.close();
    		} 
    		catch (WriteException e) {
    			e.printStackTrace();
    		} 
    		catch (IOException e) {
    			e.printStackTrace();
    		} 
    	}
    }
    merci à tous

  16. #16
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Points : 80
    Points
    80
    Par défaut
    personne ne voit ???

    Dans ma table j'ai supposons cette valeur :
    1 ab 56
    quand je suis le code en mode debug,
    arrivé à ce niveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label var = new Label(j-1,i,chaine);
    sheet.addCell(var);
    J'ai bien
    J-1 = 0 donc la colonne A d'Excel
    i = 1 donc la ligne 2.
    Et la variable chaine contient 1.

    puis,
    J-1 = 1 donc la colonne B d'Excel
    i = 1 donc la ligne 2.
    Et la variable chaine contient ab.

    J-1 = 2 donc la colonne C d'Excel
    i = 1 donc la ligne 2.
    Et la variable chaine contient 56.

    Mais quand j'ouvre le fichier excel,
    je trouve uniquement la cellule A1 renseigné avec la valeur 1.

    en mode debug sous eclipse,
    est-ce possible de savoir ce que java fait au moment de l'écriture
    et du coup de savoir pourquoi java écrit seulement dans une seule cellule.

  17. #17
    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,

    Tu ne dois pas appeler workbook.write() à chaque nouvelle cellule, mais une seule fois, à la fin, avant de fermer le workbook. Ensuite, je ne sais pas si c'est ce que tu veux ou pas, mais tu crées une cellule par feuille : si tu veux créer une seule feuille de calcul avec toutes les valeurs, crées le sheet une fois au début, et écris toujours dans le 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.

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Vu la manière dont ton code est fait, tu ne remplis pas une feuille avec tes résultats, mais tu remplis i*j feuilles, portant le même nom, chacune avec une seule cellule remplie :s


    Tu boucle sur i,j. 0 chaque itération tu fais un write_file (....), et dans write_file, comble du mauvais goût, tu va écrire le fichier sur le disque dur. Pourquoi

    1) tu n'écrit pas le ficheir juste à la fin
    2) tu ne fais pas une seule sheet que tu rempli...

    Je suppose que le système n'aime pas ton orgie de sheets....

Discussions similaires

  1. [A-03] Extraire des données d'Access vers Excel
    Par azräel dans le forum VBA Access
    Réponses: 5
    Dernier message: 29/10/2008, 08h13
  2. extraction des données de MySQL vers excel
    Par wiama dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/05/2007, 11h37
  3. [GML] Scripts shell pour extraire des données d'Oracle
    Par diamonds dans le forum XQUERY/SGBD
    Réponses: 1
    Dernier message: 28/09/2006, 07h04
  4. Réponses: 1
    Dernier message: 07/07/2006, 18h13
  5. Export de données Oracle vers Excel via PHP
    Par Yanos dans le forum Oracle
    Réponses: 1
    Dernier message: 11/01/2006, 18h11

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