2014-02-05 6 views
5

So beheben Sie diesen Fehler ---> Syntaxfehler auf Token (s), falsch platzierte Konstrukte Der Fehler liegt in der unten angegebenen Zeile. Hinweis: Dieser Code wurde im Internet kopiert und versucht, ihn als Lernwerkzeug zu verwenden. Ich benutze Eclipse Danke!Syntaxfehler auf Token (s), falsch platzierte Konstrukte

import java.io.File; 
import java.io.FileOutputStream; 
import java.util.Map; 
import java.util.Set; 
import java.util.TreeMap; 

import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.xssf.usermodel.XSSFSheet; 
import org.apache.poi.xssf.usermodel.XSSFWorkbook; 

public class EcellTest22 { 
    //Blank workbook 
    XSSFWorkbook workbook = new XSSFWorkbook(); 

    //Create a blank sheet 
    XSSFSheet sheet = workbook.createSheet("Employee Data"); 

    //This data needs to be written (Object[]) 
    Map<String, Object[]> data = new TreeMap<String, Object[]>(); 
    // 
    data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); <--Syntax error on token(s), misplaced construct(s) 


    data.put("2", new Object[]{1, "Amit", "Shukla"}); 
    data.put("3", new Object[]{2, "Lokesh", "Gupta"}); 
    data.put("4", new Object[]{3, "John", "Adwards"}); 
    data.put("5", new Object[]{4, "Brian", "Schultz"}); 

    //Iterate over data and write to sheet 
    Set<String> keyset = data.keySet(); 

    int rownum = 0; 
    for (String key : keyset) 
    { 
     //create a row of excelsheet 
     Row row = sheet.createRow(rownum++); 

     //get object array of prerticuler key 
     Object[] objArr = data.get(key); 

     int cellnum = 0; 

     for (Object obj : objArr) 
     { 
      Cell cell = row.createCell(cellnum++); 
      if (obj instanceof String) 
      { 
       cell.setCellValue((String) obj); 
      } 
      else if (obj instanceof Integer) 
      { 
       cell.setCellValue((Integer) obj); 
      } 
     } 
    } 
    try 
    { 
     //Write the workbook in file system 
     FileOutputStream out = new FileOutputStream(new File("C:\\Documents and Settings\\admin\\Desktop\\imp data\\howtodoinjava_demo.xlsx")); 
     workbook.write(out); 
     out.close(); 
     System.out.println("howtodoinjava_demo.xlsx written successfully on disk."); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

    } 

} 

Antwort

7

Sie müssen alle Anweisungen nach den Deklarationen in einem Codeblock platzieren, z. Methode und nicht der Klassenblock. Logischerweise ist es wahrscheinlich sinnvoll, alle Aussagen in dem Codeblock zu platzieren, aber die nicht-deklarativen Anweisungen müssen im neuen Block

private void processFile() { 
    data.put("1", new Object[]{"ID","NAME", "LASTNAME"}); // <--Syntax error 
    ...//snip 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
} 
+0

Dies schließt Importanweisungen ein. – Noumenon

+0

Offensichtlich enthält dies nicht importieren Anweisungen :) – Reimeus

+0

Ich wollte sagen, dass, wenn eine Import-Anweisung zwischen Ihren Klammern kommt, wird es diesen Fehler genau wie anderer Code verursachen. Ist mir mit einem Velocity Include-Makro passiert. – Noumenon

2

Platz gesamten Code in einem Hauptverfahren eingeschlossen werden:

public static void main(String[] args) { 
     //All of your code goes here 

} 

Anweisungen (diese enthält keine Deklarationen) müssen innerhalb eines Blocks ausgeführt werden. Es scheint, dass Sie einen Test von Code ausführen und dass dies kein tatsächliches Objekt in Ihrem Code sein soll, also müssen Sie es in die Hauptmethode einfügen.

1

Problem behoben. Ich habe ein neues Projekt in Eclipse erstellt, das POI (jar) zu den Bibliotheken hinzugefügt und der Syntaxfehler wird nicht mehr angezeigt.