Vi spiego 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
con k inizializzato a zero. Lo uso per capire nella servlet successiva quali sono le colonne selezionate.codice:<input type=\"checkbox\" name=\"intestazione\" value='"+k+"' checked=\"yes\" >
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
Ad occhio mi sembrava giusta, ma quando vado a vedere l'out.println a video i valori del primo ifcodice: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(" ");out.println(" "); 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(" ");out.println(" "); H.Pulizia();D.Pulizia(); } } finally { out.close(); }
sono giusti.codice:if(Integer.parseInt(check[l]) == p)
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?!
edit:
Ho appena notato che se seleziono più colonne, il contatore incrementa l'errore.![]()
![]()
![]()

Rispondi quotando