Bonjour à tous et à toute
Je suis en train de manipuler un fichier excel via Java POI ,pour chaque ligne
à priori il y a un nombre de colonne identique mais dans certaines colonnes il peut y avoir aucune information
A l'affichage du prog (voir ci dessous) il y a un décalage avec les colonnes.
On sait que dans une feuille excel les colonnes vont de :A à K il peut y avoir par exemple , G colonne pertinente pour une des tables et trois colonnes vide entre D et F pour la première ligne par exemple,pour la deuxième ligne toujours donc G colonnes pertinente mais des "vides" a d'autres endroits
Qui pourrait m'aider à résoudre cela en espérant que je n'ai pas été trop brouillon dans mes explications
Bonne journée
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 package Package5; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.*; //se connecte à la base public class ConnectionBase { Scanner sc =new Scanner(System.in); Connection conn; public void connectionBase() { try { System.out.println("Saisir DRIVER,puis URL ,puis Mot de passe"); if(this.conn == null) { this.conn= DriverManager.getConnection(sc.next(),sc.next(),sc.next()); System.out.println("Connection effective !"); } } catch (Exception e) { e.printStackTrace(); } } //charge le driver public void chargerDriverBase() { try{ System.out.println("Saisir le Nom du driver "); Class.forName(sc.next()); System.out.println("DRIVER OK ! "); }catch(Exception e) { e.printStackTrace(); } } }
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 package Package5; import Package5.ConnectionBase; import java.sql.*; public class DeconnectionBase { //methode qui deconnecte la base de donnees public void deconnectionDeLaBase(Connection connect) { // a chaque ouverture de connection on doit la fermer avec un try catch pour gérer les erreurs s'il y en a try { connect.close(); } catch (SQLException e) { e.printStackTrace(); } } }
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 package Package5; import java.sql.*; import java.util.*; public class InsertionDonneesFichierExcel { Scanner sc=new Scanner(System.in); Statement transmission; ResultSet resultat; public void PreparerRequete(Connection conn) { try { transmission=conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); } System.out.println(" DEFINIR VOTRE REQUETE "); excuterRequete( transmission , sc.next()); } //methode qui execute une requete public void excuterRequete(Statement transmission ,String requete ) { try { resultat=transmission.executeQuery(requete); } catch (SQLException e) { e.printStackTrace(); } if (transmission != null) try { transmission.close(); // fermeture du statemement } catch (SQLException e1) { e1.printStackTrace(); } } }
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 package Package5; import java.awt.Font; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import java.io.FileInputStream; import java.io.IOException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.util.AreaReference; import org.apache.poi.ss.util.CellReference; import java.util.*; public class LectureEtRecuperationFichier { //affiche et lit les données d'un numero de feuille d'un fichier exel public void numeroFeuilleFichierExcelAParcourir() { Scanner sc=new Scanner(System.in); HSSFWorkbook wb; try { //Lecture du fichier excel InputStream inp= new FileInputStream("C:\\Documents and Settings\\asuissa\\Bureau\\BDD.XLS"); // recupère le fichier excel wb = new HSSFWorkbook(new POIFSFileSystem(inp)); System.out.println(" Quelle Feuille du fichier souhaitez vous lire"); int numeroFeuille=sc.nextInt(); HSSFSheet sheet = wb.getSheetAt(numeroFeuille); //Nrow Possede le nombre de ligne de la Feuille sheet int Nrow = sheet.getLastRowNum(); System.out.println("Nombre de ligne de la feuille courante " + Nrow + "\n"+"\n"+"\n"); for (int i = 0; i < Nrow; i++) { // for1 //recuperation des lignes une a une HSSFRow row = sheet.getRow(i); //si la condition est verifier à donc au moins une cellule non vide dans la ligne if (row != null) { //recupère nombre de cellule de la ligne int lastCellNum=row.getLastCellNum(); for (int j = 0; j<lastCellNum;j++) { // for2 //Récupère la cellule puis sa valeur HSSFCell cell =row.getCell(j); // appelle la methode et celle ci lui affecte le bon typage if (cell != null) { Object value = ContenuCellule(cell); System.out.print(value); } else { System.out.print("\t"); } System.out.print("\t"); } // fin for2 System.out.println(); } }//fin for1 } catch (IOException e) { e.printStackTrace(); } } /** * La cellule peut contenir différent type de valeur qui doivent être * récupéré spécifiquement # */ public static Object ContenuCellule(HSSFCell cell) { if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) { return "VOID"; } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) { return cell.getBooleanCellValue(); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_ERROR) { return cell.getErrorCellValue(); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA) { return cell.getCellFormula(); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { return cell.getNumericCellValue(); } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { return cell.getRichStringCellValue(); } return null; } //methode fermeture fichier public void fermerLeFichier(InputStream inp ) { try { inp.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
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 package Package5; public class ProgrammePrincipale { ConnectionBase connb=new ConnectionBase(); DeconnectionBase decobase=new DeconnectionBase(); InsertionDonneesFichierExcel isdf=new InsertionDonneesFichierExcel(); LectureEtRecuperationFichier lect=new LectureEtRecuperationFichier(); public static void main(String [] args ) { //creation d'un objet de type classe pour acceder au variable d'instance de chaque obje de classe de ProgPrincipale ProgrammePrincipale princ =new ProgrammePrincipale(); //connection et charge driver princ.connb.connectionBase(); princ.connb.chargerDriverBase(); //li et affiche le fichier excel princ.lect.numeroFeuilleFichierExcelAParcourir(); //insere données fichier excel dans la base //a faire //ici quand on fini on coupe la connection princ.decobase.deconnectionDeLaBase(princ.connb.conn); } }
A l'affichage
en pièce jointe le fichier excel
Id nom prenom ville rue dept tel profession
2.0 Dupuy Paul Paris Turin VOID 1.44859655E8 policier
3.0 Charles Patrick Deauville Réaumur 14.0 4.55889966E8 boulanger
4.0 Dupont Pierre Marseille Lepuis 13.0 5.77889966E8 informaticien
5.0 Henry thierry Barcelone santiago 2.0 4.44111223E8 footballeur
6.0 Truc Alain Paris saintpaul 75.0 1.49987756E8 maintenance
7.0 deschamps Didier Marseille DuPort 13.0 1.22233355E8 entraineur
Partager