import java.io.*;import java.io.File;import jxl.*;import jxl.write.*;import java.util.*;import jxl.read.biff.*;import java.util.ArrayList;import java.util.Iterator;import java.util.ListIterator;/** * Classe permettant de travailler avec des fichiers excel au format .xls * @author moi */public class JExcel { /** Variable faisant reference au classeur excel */ private Workbook workbook; /** Variable faisant reference aux configurations du classeur excel */ private WorkbookSettings ws; /** Variable faisant reference aux chemin absolue vers le fichier excel */ private String filename; public static String path = "/home/xwz/public_html/jexcel/java/webapps/test/WEB-INF/classes/"; /** * Constructeur de base * @param filename adresse absolue d'un fchier .xls * @throws IOException si le fichier n'existe pas par exemple * @throws BiffException si l'API JExcel a un probleme avec l'ouverture du fichier excel */ public JExcel(String filename) throws IOException, BiffException { this.filename = filename; this.ws = new WorkbookSettings(); this.ws.setLocale(new Locale("fr", "FR")); this.workbook = Workbook.getWorkbook(new File(filename),this.ws); } /** * Destructeur de la classe qui permet de fermer le fichier avant que l'objet soit detruit */ protected void finalize() throws Throwable { this.workbook.close(); } /** * Permet de recuperer la liste des onglets presents dans le fichier excel * @return un tableau de String contenant tout les noms des onglets */ public String[] getSheetNames(){ String[] names = this.workbook.getSheetNames(); return names; } /** * Permet de recuperer une liste de nombre dans une colonne dont la lettre est inconnue mais la ligne des en-tete de colonne l'est. * @param tabName nom de l'onglet dans lequel la liste cherchee se citue * @param line ligne sur laquelle se citue les entetes de colonnes * @param title titre de la colonne a chercher * @return une liste de float contenant tout les nombres contenu dans la liste selectionnee */ public ArrayList<Double> getHorizontalNumberList(String tabName, int line, String title){ ArrayList<Double> list = new ArrayList<Double>(); // Recherche de la colonne concernee par l'en-tete de colonne souhaitee Sheet s = this.workbook.getSheet(tabName); int maxCols = s.getColumns(); Integer col=new Integer(-1); for(Integer i=0; i<maxCols; i++){ Cell c = (Cell) s.getCell(i,line); if(c.getType() == CellType.LABEL){ if(c.getContents().equals(title)){ col=i; col++; break; } } } // On cree la liste de tous les nombres de la colonne jusqu'a ce qu'on tombe sur une cellule d'un type different de nombre Integer i = line+1; while(col != -1 && i < s.getRows()){ Cell c = (Cell) s.getCell(col,i); if(c.getType().toString().equals(CellType.NUMBER.toString())){ NumberCell nc = (NumberCell) c; list.add(nc.getValue()); }else{ //on a trouve une cellule d'un type autre que Number donc on falsifie la condition du while col = -1; } i++; } return list; }}