
Originariamente inviata da
valia
appunto...mi hai preceduta

codice:
public class Datasheet {
private FileInputStream listaCom; //lista di comunicazione, il file viene passato per creare un foglio di calcolo da cui estrarre
//i campi
private HSSFWorkbook workbookInput;
private HSSFSheet foglio;
private HSSFWorkbook workbookOut;
private HSSFSheet sheetOut, sheetInput;
private HSSFRow rowInput;
private String nomeWork;//nome del foglio di calcolo
private String typeSheet;
private int tipo_ldc, ultimo_indice_ldc;
private ArrayList<HSSFRow> rows;
private int numRighe;
public static final int indice_WRDIG = 5;
public static final int indice_RDDIG = 6;
public static final int indice_WRANALOG = 7;
public static final int indice_RDANALOG = 8;
public static final String DR = "DR";
public static final String AR = "AR";
public static final String AI = "AI";
public static final String DI = "DI";
public static final String DA = "DA";
/*
COSTRUTTORE
---------------------------------------------------------
Viene passato il nome della lista di Comunicazione e la tipologia (AR,DR,etc.)
Viene creato un workbook (out) con un foglio di calcolo della tipologia specificata
*/
public Datasheet(String nomeWork, String sheetType){
/*PARTE 1: IMPOSTA IL TIPO DI FOGLIO*/
this.nomeWork = nomeWork;
typeSheet = sheetType;
switch(typeSheet){
case DR:
tipo_ldc = indice_WRDIG;
break;
case AR:
tipo_ldc = indice_WRANALOG;
break;
case AI:
tipo_ldc = indice_RDANALOG;
break;
case DI:
tipo_ldc = indice_RDDIG;
break;
case DA:
tipo_ldc = indice_RDDIG;
break;
}
/*PARTE 2: APRE IN LETTURA LA LISTA DI COMUNICAZIONE E CREA IL FILE DI OUTPUT*/
/*parte x*/
try{
listaCom = new FileInputStream(this.nomeWork);
workbookInput = new HSSFWorkbook(listaCom);
workbookOut = new HSSFWorkbook();
/*parte x*/
//creo il foglio nel file di output
sheetOut = workbookOut.createSheet(typeSheet);
//devo recuperare il foglio appropriato della lista di comunicazione
sheetInput = workbookInput.getSheetAt(tipo_ldc);
//mi salvo l'ultima riga presente nel file di input (lista di comunicazione)
ultimo_indice_ldc = sheetInput.getLastRowNum();
//System.out.println("La LDC ha: " + ultimo_indice_ldc + " righe ed è di tipo: " + this.typeSheet + " - " + tipo_ldc);
/*parte x*/
rows = new ArrayList<HSSFRow>();//inizializzo la lista di righe di intestazione
listaCom.close();
}catch(Exception e){
System.out.println("ECCEZIONE(Costruttore_datasheet):");
e.printStackTrace();
}
}//costruttore]
questa è la classe.
poi un metodo richiamato dentro la classe è:
codice:
private void writeCol(int indice, String value){
HSSFRow row_output;
for (int i=1; i<ultimo_indice_ldc; i++){ /**scorre fino all'ultima riga**/
/*SCRITTURA*/
this.sheetOut.createRow(i+4); /*seleziona la riga corrente*/
row_output = this.sheetOut.getRow(i+4);
HSSFCell cellOut = row_output.createCell(indice); //creo la cella nella colonna prima ricercata
cellOut.setCellValue(value); //scrittura del valore desiderato (_value) passato come argomento
//del metodo
}//FINE CICLO FOR
e un altro:
codice:
private int searchCol(String colname, int rownum, boolean isInput){
HSSFRow row_tmp;
if (isInput){
row_tmp = this.sheetInput.getRow(rownum); /*prendo la riga di intestazione*/
/*poi ricerco la colonna desiderata sulla base dell'argomento del metodo (variabile colname_ldc)*/
}else{
row_tmp = this.sheetOut.getRow(rownum);
}
int indice_colonna_int = -1;
System.out.println("DEBUG: la colonna è: " + row_tmp.getRowNum());
short minColIx = row_tmp.getFirstCellNum();
short maxColIx = row_tmp.getLastCellNum();
System.out.println("DEBUG: minColIx: " + minColIx);
System.out.println("DEBUG: maxColIx: " + maxColIx);
for( short colIx=minColIx; colIx<maxColIx; colIx++) {
HSSFCell cell_ldc;
cell_ldc = row_tmp.getCell((int)colIx);
if(cell_ldc == null) {
System.out.println("DEBUG: la cella è null - ");
continue;
}else{
System.out.println("DEBUG: la cella è diversa da null e contiene - " + cell_ldc.toString());
if(cell_ldc.toString() == colname){
//ho trovato l'indice dalla colonna corrispondente
indice_colonna_int = colIx;
System.out.println("DEBUG: ho trovato l'indice della cella che è: " + indice_colonna_int);
/*OCCHIO AL RETURN*/
return indice_colonna_int;
}
}
}
/**
* RETURN VALUE: RITORNA -1 SE NON HA TROVATO NULLA, ALTRIMENTI UN VALORE MAGGIORE
* O UGUALE A 0
*/
return indice_colonna_int;
}//fine metodo