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 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InstanceGrid[] instanceGrid = (InstanceGrid[]) request.getSession().getAttribute( "instanceGrid" );
String[] listTitleField = request.getParameter( "fieldTitleVisible" ).split( "\\|" );
String[] listNameField = request.getParameter( "fieldNameVisible" ).split( "\\|" );
File excelFile = new File( "Export.xls" );
try {
WritableWorkbook workbook = Workbook.createWorkbook( excelFile );
WritableSheet sheet = workbook.createSheet( "Export", 0 );
//Crée le format dune cellule
// WritableFont arial10font = new WritableFont( WritableFont.ARIAL, 20,
// WritableFont.BOLD, true, UnderlineStyle.NO_UNDERLINE,
// Colour.BLACK, ScriptStyle.NORMAL_SCRIPT);
// WritableCellFormat arial10format = new WritableCellFormat( arial10font );
//1ere ligne title
for (int i = 0; i < listTitleField.length; i++) {
//Crée un label à la ligne 0, colonne i avec le format spécifique
Label label = new Label( i, 0, listTitleField[i] );
//Ajout des cellules
sheet.addCell(label);
}
for (int i = 0; i < instanceGrid.length; i++) {
for (int j = 0; j < listNameField.length; j++) {
System.out.println( "listNameField[j] = _" + listNameField[j] + "_" );
if ( listNameField[j].equals( "" ) == false ) {
Label label = new Label( j, i+1, "" );
if ( listNameField[j].equals( "indice3it" ) ) {
label = new Label( j, i+1, instanceGrid[i].getIndice3IT() );
} else if ( listNameField[j].equals( "fab" ) ) {
label = new Label( j, i+1, instanceGrid[i].getFabricabilite() );
} else if ( listNameField[j].equals( "boxcode" ) ) {
label = new Label( j, i+1, instanceGrid[i].getBoxCode() );
} else if ( listNameField[j].equals( "refcatia" ) ) {
label = new Label( j, i+1, instanceGrid[i].getRefCatia() );
} else if ( listNameField[j].equals( "ref3it" ) ) {
label = new Label( j, i+1, instanceGrid[i].getRef3it() );
} else if ( listNameField[j].equals( "status" ) ) {
label = new Label( j, i+1, instanceGrid[i].getEtat() );
} else if ( listNameField[j].equals( "importdate" ) ) {
label = new Label( j, i+1, instanceGrid[i].getImportDate().toString() );
} else if ( listNameField[j].equals( "type" ) ) {
label = new Label( j, i+1, instanceGrid[i].getType() );
} else if ( listNameField[j].equals( "indicecatia" ) ) {
label = new Label( j, i+1, instanceGrid[i].getIndiceCatia() );
} else if ( listNameField[j].equals( "instance_id" ) ) {
label = new Label( j, i+1, instanceGrid[i].getInstanceId().toString() );
} else if ( listNameField[j].equals( "istTypeOf" ) ) {
label = new Label( j, i+1, instanceGrid[i].getIstTypeOf() );
} else if ( listNameField[j].equals( "quantity" ) ) {
label = new Label( j, i+1, instanceGrid[i].getQuantity().toString() );
} else if ( listNameField[j].equals( "searchFilter" ) ) {
label = new Label( j, i+1, instanceGrid[i].getSearchFilter() );
} else if ( listNameField[j].equals( "catiastatus" ) ) {
label = new Label( j, i+1, instanceGrid[i].getStatusCatia() );
} else if ( listNameField[j].equals( "lotbe" ) ) {
label = new Label( j, i+1, instanceGrid[i].getLotBE() );
} else if ( listNameField[j].equals( "doublon" ) ) {
label = new Label( j, i+1, instanceGrid[i].getIsDoublon().toString() );
} else if ( listNameField[j].equals( "operatingTemperature" ) ) {
label = new Label( j, i+1, instanceGrid[i].getOperatingTemperature() );
} else if ( listNameField[j].equals( "frequencyBand" ) ) {
label = new Label( j, i+1, instanceGrid[i].getFrequencyBand() );
} else if ( listNameField[j].equals( "losses" ) ) {
label = new Label( j, i+1, instanceGrid[i].getLosses().toString() );
} else if ( listNameField[j].equals( "tos" ) ) {
label = new Label( j, i+1, instanceGrid[i].getTos().toString() );
} else if ( listNameField[j].equals( "finishing" ) ) {
label = new Label( j, i+1, instanceGrid[i].getFinishing() );
} else if ( listNameField[j].equals( "processing" ) ) {
label = new Label( j, i+1, instanceGrid[i].getProcessing() );
} else if ( listNameField[j].equals( "cao_mass" ) ) {
label = new Label( j, i+1, instanceGrid[i].getCaoMass() );
} else if ( listNameField[j].equals( "computed_mass" ) ) {
label = new Label( j, i+1, instanceGrid[i].getComputedMass() );
} else if ( listNameField[j].equals( "thickness" ) ) {
label = new Label( j, i+1, instanceGrid[i].getThickness() );
} else if ( listNameField[j].equals( "category" ) ) {
label = new Label( j, i+1, instanceGrid[i].getCategory() );
} else if ( listNameField[j].equals( "extremity1" ) ) {
label = new Label( j, i+1, instanceGrid[i].getExtremity1() );
} else if ( listNameField[j].equals( "extremity2" ) ) {
label = new Label( j, i+1, instanceGrid[i].getExtremity2() );
} else if ( listNameField[j].equals( "description" ) ) {
label = new Label( j, i+1, instanceGrid[i].getDescription() );
} else if ( listNameField[j].equals( "extendedTemperature" ) ) {
label = new Label( j, i+1, instanceGrid[i].getExtendedTemperature() );
} else if ( listNameField[j].equals( "light" ) ) {
label = new Label( j, i+1, instanceGrid[i].getLight() );
}
sheet.addCell( label );
}
}
}
//Ecriture et fermeture du classeur
workbook.write();
workbook.close();
} catch (RowsExceededException e1) {
e1.printStackTrace();
} catch (WriteException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("Le fichier \"Export.xls\" à été généré correctement.");
}
// Restitution du fichier ZIP créé sous forme de flux dans la réponse
response.setContentType("application/vnd.ms-excel");
String fichier = excelFile.getPath() ;
System.out.println( "fichier = " + fichier );
response.setHeader( "Content-disposition", "attachment; filename=\"" + fichier + "\"" );
// Création d?un buffer de sortie afin d?améliorer les perf d?écriture
OutputStream dest = response.getOutputStream();
BufferedOutputStream out = new BufferedOutputStream( dest );
//Création du buffer d?entrée
final int BUFFER = 2048;
byte data[] = new byte[BUFFER];
FileInputStream fi = new FileInputStream( excelFile );
BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
//Écriture des entrées dans le flux de sortie par paquet de taille égale aux tampons d?entrée et de sortie
int count;
while((count = buffi.read(data, 0, BUFFER)) != -1) {
out.write(data, 0, count);
}
//Fermeture des flux
buffi.close();
// out.close();
// Calculer le flux à renvoyer au client
byte[] bytes = out.toString().getBytes();
// Envoyer le flux dans la réponse
OutputStream os = response.getOutputStream();
os.write( bytes );
os.close();
out.close();
} |
Partager