2009-11-17 10 views
17
import java.io.*; 
import jxl.*; 
class Xlparsing 
{ 
    Workbook wb =wb.getWorkbook(new File(
    "C:\\Documents and Settings\\kmoorthi\\Desktop\\ak\\new.xls")); 
    // Illegal forward reference What it means 
    Sheet st = wb.getSheet(0); 
    Cell cell1 = st.getCell(0,0); 
    String a1 = cell1.getContents(); 
    public static void main(String s[]) 
    { 
    System.out.println(new Xlparsing().a1); 
    } 
} 

Salve Quando ho tentato di estrarre i dati dal foglio excel, l'errore di riferimento in avanti illegale si verifica nella creazione dell'oggetto file.riferimento forward illegale in java

Come risolvere questo?

+0

Se il commento nel codice è la domanda, quando lo si ottiene? Da dove? Come eccezione? Di certo non è un concetto di javac lanciare riferimenti illegali in avanti nei confronti dell'utente. Se si tratta di un'eccezione probabilmente è molto correlata al file xls a cui non abbiamo accesso. – Fredrik

+0

Questo errore arriva quando ho provato a compilare il codice –

+0

Puoi mostrare l'errore del compilatore? – notnoop

risposta

49

"Riferimento avanti non valido" indica che si sta tentando di utilizzare una variabile prima che sia definita.

In questo caso, si sta tentando di richiamare un metodo su wb nella dichiarazione di wb.

Workbook wb = wb.getWorkbook(...); 
+3

Sembra che getWorkbook sia statico nell'API: Workbook wb = Workbook.getWorkbook (...); dovrebbe fare il trucco – barrowc

+0

Ah, ho cercato su Google per capire quale API sta usando ma non è riuscito a trovare una corrispondenza esatta. – erickson

+0

JExcelAPI: http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/Workbook.html – sanastasiadis

-1

sebbene getWorkbook sia statico, quindi, di conseguenza, questo codice avrebbe dovuto funzionare. Ma qui, usare il riferimento prima della sua dichiarazione o nella stessa dichiarazione come dichiarazione sta causando l'errore "Riferimento in avanti, cioè usando il riferimento prima della dichiarazione".

+1

'Getworkbook' potrebbe essere statico, ma' wb' no. Non è ancora possibile chiamare un metodo statico su un riferimento non inizializzato. –

0

Forward Illegal Reference è un termine che viene visualizzato quando un valore di variabile non globale non inizializzato viene assegnato a una variabile globale.

Nel tuo caso Workbook wb = wb.getWorkbook(new File("----")); - wb non è inizializzato prima di chiamare il metodo getWorkbook(). Per evitare la FIR, è necessario inizializzare wb.

0

Immagino che l'intenzione fosse quella di chiamare "staticamente" il metodo getWorkbook(), come si dovrebbe. Pertanto, è necessario modificare l'inizializzazione del membro wb come:

Workbook wb = Workbook.getWorkbook(...)