ho scaricato e installato l'add-on di JExcel API per la modifica e lettura di file excel in programmi java.
questa classe però mi da errore quando lancia l'oggetto Workbook, non riesce ad istanziarlo
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 68
at java.lang.String.checkBounds(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at jxl.biff.StringHelper.getString(StringHelper.java: 164)
at jxl.read.biff.WriteAccessRecord.<init>(WriteAccess Record.java:56)
at jxl.read.biff.WorkbookParser.parse(WorkbookParser. java:820)
at jxl.Workbook.getWorkbook(Workbook.java:237)
at jxl.Workbook.getWorkbook(Workbook.java:198)
at ludecaExcel.main(ludecaExcel.java:39)
non so se sbaglio io in qualcosa dell'istallazione della libreria o se qualcosa di essa non funziona.
l'errore me lo da sul codice d'esempio dello stesso autore della libreria JExcel, quindi non credo sia un'errore di programmazione.
codice:import java.io.File; import java.io.IOException; import java.util.Date; import jxl.Cell; import jxl.DateCell; import jxl.LabelCell; import jxl.NumberCell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * Classe di prova per leggere i campi da un file excel e stamparli a video * @author Administrator * */ public class ludecaExcel { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Cell nome, cognome, nascita, anni, peso; String nomeC = ""; String cognomeC = ""; Date nascitaC = null; int anniC = 0; Double pesoC = 0.0;//in kg LabelCell lc; DateCell dc; NumberCell nc; try { //Apro il file di excel da leggere Workbook workbook = Workbook.getWorkbook(new File("C:\\Documents and Settings\\Operatore\\Desktop\\nomi.xls")); //Seleziono il foglio sul quale voglio operare (il primo foglio ha indice 0) Sheet sheet = workbook.getSheet(0); //Leggo tutte le righe int riga = 1;//indice riga, parto da 1 per saltare l'intestazione dei campi int numeroRighe = sheet.getRows();//calcolo quante righe ci sono nel foglio //Attento che c'è una riga in più per l'intestazione! for(int i = 1; i < numeroRighe; i++){ System.out.println(i); nome = sheet.getCell(0, riga); lc = (LabelCell)nome; nomeC = lc.getString(); cognome = sheet.getCell(1, riga); lc = (LabelCell)cognome; cognomeC = lc.getString(); nascita = sheet.getCell(2, riga); dc = (DateCell)nascita; nascitaC = dc.getDate(); anni = sheet.getCell(3, riga); nc = (NumberCell)anni; anniC = (int)nc.getValue(); peso = sheet.getCell(4, riga); nc = (NumberCell)peso; pesoC = nc.getValue(); System.out.println("Riga: " + riga + "nome: " + nomeC + "Cognome: " + cognomeC + "Nascita: " + nascitaC + "età: " + anniC + "Peso: " + pesoC); //passo alla riga successiva riga++; } //Chiudo excel e libero la memoria workbook.close(); } catch (BiffException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
vi prego aiuto mi serve questa classe per alleggerirmi del lavoro.
GRAZIE INFINITE
p.s. non consigliatemi Apache POI


Rispondi quotando