package importation.xls;
import java.io.InputStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Vector;
import jxl.Sheet;
import jxl.Workbook;
/**
*<p> XlsImportateur c'est une classe qui importe les fichiers excel</p>
* <p>Il parcoure les ligne et les colonnes, il d�code la ligne et l'ajoute dans la liste des objets � importer</p>
*
* @author Kasandra
* @param <T>
*/
public class XlsImportateur<T> {
/**
* importe les fichiers externes au format Xls
* il re�oit en param�tre
* @param fluxFichier : le flux d'entr�e
* @param nomDeLaFeuille : le nom de la feuille � importer
* @param decodeur : de la feuille excel
*
* @return objetsImportes
*
* @throws Exception : g�n�re une exception au cas o�, l'importation �choue
*/
public Collection<T> importe(InputStream fluxFichier, String nomDeLaFeuille, IXlsDecodeur<T> decodeur) throws Exception {
Vector<T> objetsImportes = new Vector<T>();
Workbook classeur = null;
try {
classeur = Workbook.getWorkbook(fluxFichier);
Sheet feuille = classeur.getSheet(nomDeLaFeuille);
final int nombreDeLignes = feuille.getRows();
int[] colonnesALire = decodeur.colonnesALire();
for (int numeroDeLigne = 0; numeroDeLigne < nombreDeLignes; numeroDeLigne ++) {
Map<Integer,String> ligne = new HashMap<Integer,String>();
for (int numeroDeColonne : colonnesALire) {
String valeurDeLaCellule = feuille.getCell(numeroDeColonne,numeroDeLigne).getContents();
ligne.put(numeroDeColonne,valeurDeLaCellule);
}
objetsImportes.add(decodeur.decode(ligne));
}
}
finally {
if (classeur != null) {
classeur.close();
}
}
return objetsImportes;
}
}