mauc
01-03-2012, 15:59
Un buon pomeriggio a tutto il forum.
Vi spiego subito il mio problema.
Ho un foglio excel con un'intestazione e dei valori nella tabelle. I valori sono 5, che si ripetono riga per riga. Il foglio excel l'ho trasformato in una tabella html e nell'intestazione sono andato a creare una checkbox
<input type=\"checkbox\" name=\"intestazione\" value='"+k+"' checked=\"yes\" >
con k inizializzato a zero. Lo uso per capire nella servlet successiva quali sono le colonne selezionate.
Una volta selezionate un determinato numero di colonne vado nella successiva servlet, attraverso un form per analizzare i dati all'interno delle colonne selezionate e non.
Facendo in questo modo
String check[] = request.getParameterValues("intestazione"); // qui trovo le colonne selezionate
try {
String cartella="C://Documents and Settings//user//Documenti//NetBeansProjects//prog//build//web//";
String filePath = cartella + nome;
FileInputStream fs = new FileInputStream(new File(filePath));
WorkbookSettings ws = null;
Workbook workbook = null;
Sheet s = null;
Cell rowData[] = null;
double rowCount = 0.0;
int columnCount = 0;
int totalSheets = 0;
ws = new WorkbookSettings();
workbook = Workbook.getWorkbook(fs, ws);
totalSheets = workbook.getNumberOfSheets();
s = workbook.getSheet(0);
columnCount=s.getColumns();
rowCount = s.getRows();
for (int i = 1; i < rowCount; i++) {
rowData = s.getRow(i);
if (rowData.length > 1) {
int p=0;
for (int j = 0; j < columnCount; j++) {
p++;
for (int l=0; l<check.length;l++){
if(Integer.parseInt(check[l]) == p){ // Vuol dire che ho una cella della Colonna selezionata
D.Conta(rowData[j].getContents());
}
else //ho una colonna non selezionata
H.Conta(rowData[j].getContents());
}
}
}
out.println("hAA "+ H.getA() );
out.println("hCC "+ H.getC() );
out.println("hGG "+ H.getG() );
out.println("hTT "+ H.getT() );
out.println("hCT "+ H.getCT() ); out.println("<br>");out.println("<br>");
out.println(" dAA "+ D.getA() );
out.println(" dCC "+ D.getC() );
out.println(" dGG "+ D.getG() );
out.println(" dTT "+ D.getT() );
out.println(" dCT "+ D.getCT() ); out.println("<br>");out.println("<br>");
H.Pulizia();D.Pulizia();
}
} finally {
out.close();
}
Ad occhio mi sembrava giusta, ma quando vado a vedere l'out.println a video i valori del primo if
if(Integer.parseInt(check[l]) == p)
sono giusti.
Quelli del 2nd if sono completamenti sballati.
Ho fatto una prova con una tabella con 50colonne e ho selezionato 2 colonne. I valori delle 2 colonne sono giusti, quelle delle colonne non selezionate sono sbagliati.
Dove sbaglio?!
Noto che se seleziono pił colonne, l'errore incrementa.
Vi spiego subito il mio problema.
Ho un foglio excel con un'intestazione e dei valori nella tabelle. I valori sono 5, che si ripetono riga per riga. Il foglio excel l'ho trasformato in una tabella html e nell'intestazione sono andato a creare una checkbox
<input type=\"checkbox\" name=\"intestazione\" value='"+k+"' checked=\"yes\" >
con k inizializzato a zero. Lo uso per capire nella servlet successiva quali sono le colonne selezionate.
Una volta selezionate un determinato numero di colonne vado nella successiva servlet, attraverso un form per analizzare i dati all'interno delle colonne selezionate e non.
Facendo in questo modo
String check[] = request.getParameterValues("intestazione"); // qui trovo le colonne selezionate
try {
String cartella="C://Documents and Settings//user//Documenti//NetBeansProjects//prog//build//web//";
String filePath = cartella + nome;
FileInputStream fs = new FileInputStream(new File(filePath));
WorkbookSettings ws = null;
Workbook workbook = null;
Sheet s = null;
Cell rowData[] = null;
double rowCount = 0.0;
int columnCount = 0;
int totalSheets = 0;
ws = new WorkbookSettings();
workbook = Workbook.getWorkbook(fs, ws);
totalSheets = workbook.getNumberOfSheets();
s = workbook.getSheet(0);
columnCount=s.getColumns();
rowCount = s.getRows();
for (int i = 1; i < rowCount; i++) {
rowData = s.getRow(i);
if (rowData.length > 1) {
int p=0;
for (int j = 0; j < columnCount; j++) {
p++;
for (int l=0; l<check.length;l++){
if(Integer.parseInt(check[l]) == p){ // Vuol dire che ho una cella della Colonna selezionata
D.Conta(rowData[j].getContents());
}
else //ho una colonna non selezionata
H.Conta(rowData[j].getContents());
}
}
}
out.println("hAA "+ H.getA() );
out.println("hCC "+ H.getC() );
out.println("hGG "+ H.getG() );
out.println("hTT "+ H.getT() );
out.println("hCT "+ H.getCT() ); out.println("<br>");out.println("<br>");
out.println(" dAA "+ D.getA() );
out.println(" dCC "+ D.getC() );
out.println(" dGG "+ D.getG() );
out.println(" dTT "+ D.getT() );
out.println(" dCT "+ D.getCT() ); out.println("<br>");out.println("<br>");
H.Pulizia();D.Pulizia();
}
} finally {
out.close();
}
Ad occhio mi sembrava giusta, ma quando vado a vedere l'out.println a video i valori del primo if
if(Integer.parseInt(check[l]) == p)
sono giusti.
Quelli del 2nd if sono completamenti sballati.
Ho fatto una prova con una tabella con 50colonne e ho selezionato 2 colonne. I valori delle 2 colonne sono giusti, quelle delle colonne non selezionate sono sbagliati.
Dove sbaglio?!
Noto che se seleziono pił colonne, l'errore incrementa.