1 pièce(s) jointe(s)
Affichage d'un fichier excel via JAva POI
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:
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:
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:
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:
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:
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