2010-11-09 2 views
0

Je suis en train de lire un entier à partir d'un fichier Excel comme ceci:Java: lire un int à partir d'Excel sous forme de retour de chaîne en décimal?

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
String myExcel = "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ="";" + 
         "DriverID=22;READONLY=false"; 
     con = DriverManager.getConnection(myExcel); 
     stmt = con.createStatement(); 
rs = stmt.executeQuery("select * from [users$] where userid=" + userid); 
while(rs.next()) { 
    System.out.println(rs.getString("phone")); 
} 

Le problème: si nous supposons que le téléphone dans la feuille Excel = 123456, rs.getString (« téléphone ») renvoie l'entier avec 0 décimal, comme ceci "123456.0"

Je sais que je peux utiliser rs.getInt ("téléphone") à la place, mais le téléphone a parfois des caractères comme "+", "#", etc.

Quelle est la meilleure façon d'utiliser rs.getString pour obtenir un entier tel quel?

Répondre

0

Vous devez lire le numéro de téléphone sous forme de chaîne, puis l'analyser pour vous débarrasser des caractères indésirables. Enfin, convertissez-le en int en utilisant Integer.parseInt(phoneNumberString).

1

Essayez d'ajouter

;IMEX=1 

à la chaîne de connexion. Cela indique au pilote de traiter les données entremêlées (données de différents types de données) sous forme de texte.

S'il fait pas travail, essayez d'ajouter l'instruction IMEX=1to the SQL statement. Si cela ne fonctionne toujours pas, vous disposez des options suivantes: Utiliser le POI Apache; convertir la feuille Excel en CSV; utiliser Office Automation pour définir explicitement le type de données de la colonne; retravailler la valeur (c'est-à-dire en appliquant une opération substring, etc.).

+0

Cela n'a pas fonctionné. Quoi qu'il en soit, j'ai résolu temporairement en faisant un peu de travail autour de l'application de la sous-chaîne – evilReiko

+0

Merci pour les commentaires. - Travailler avec Excel comme une "base de données" n'est jamais totalement fiable. – robbbert

Questions connexes