2012-01-30 3 views
1

java를 사용하여 Excel 파일을 읽으려고합니다. 프로그램 컴파일 중에 잘못된 문자로 오류가 발생합니다. 이 문제를 해결하도록 도와주세요. 프로그램이 사람이이 문제를 해결하는 데 도움이 수Java에서 잘못된 문자 오류가 발생했습니다.

Microsoft Windows XP [Version 5.1.2600] 
(C) Copyright 1985-2001 Microsoft Corp. 
C:\Documents and Settings\vino>cd C:\Program Files\jdk1.6.0_10\bin 

C:\Program Files\jdk1.6.0_10\bin>javac Readingexcel.java 
Readingexcel.java:1: illegal character: \187 
import java.io.IOException; 
^ 
Readingexcel.java:1: illegal character: \191 
import java.io.IOException; 
^ 
2 errors 

같은 오류가 발생하고 컴파일하는 동안 여기에 코드를

import java.io.IOException; 
import java.io.*; 
import java.util.Iterator; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 
import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.hssf.usermodel.HSSFRow; 



public class Readingexcel { 

public static void main(String[] args) { 
    try { 
     System.out.println("before reading"); 
     POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream("input.xlsx")); 
     HSSFWorkbook wb = new HSSFWorkbook(fs); 
     HSSFSheet sheet = wb.getSheet("first"); 

     HSSFRow row; 
     HSSFCell cell; 
     String s; 

     int rows; // No of rows 
     rows = sheet.getPhysicalNumberOfRows(); 
     System.out.println(rows); 
     System.out.println(sheet.getRow(1).getPhysicalNumberOfCells()); 
     int cols = 0; // No of columns 
     int tmp = 0; 

// This trick ensures that we get the data properly even if it doesn’t start from first few rows 
     for (int i = 0; i < 10 || i < rows; i++) { 
      row = sheet.getRow(i); 

      if (row != null) { 
       tmp = sheet.getRow(i).getPhysicalNumberOfCells(); 


       if (tmp > cols) { 
        cols = tmp; 

       } 
      } 
     } 

     for (int r = 0; r < rows; r++) { 
      row = sheet.getRow(r); 
      if (row != null) { 
       for (int c = 0; c < cols; c++) { 
        cell = row.getCell((short) c); 
        if (cell != null) { 
// Your code here 
// s = cell.getData(); 
         System.out.println(cell.getStringCellValue()); 


        } 
       } 
      } 
     } 
    } catch (Exception ioe) { 
     ioe.printStackTrace(); 
    } 

} 
} 

입니다.

+0

파일의 시작 부분에 보이지 않는 문자가 있습니다. 문제를 해결할 수 없다면 소스를 새 파일로 복사하고 이전 파일을 삭제하십시오. – kba

+0

당신은 input.xlsx를 게시 할 수 있습니다 – L7ColWinters

+0

소스에'∩╗┐'이있는 것 같습니다 ... .java 파일을 메모장에서 열면 어떻게됩니까? – beny23

답변

5

저는 이것이 BOM (Byte Order Marks)이라고 확신합니다. 올바른 인코딩을 사용하고 있는지 확인하십시오. 다른 편집기에서 파일을 열고 BOM을 제거하기 위해 파일을 다시 저장하십시오. 예를 들어, Nodepad ++는 도움이됩니다. 당신은 BOM 문제를 가지고있는 것처럼

행운을 빌어 요, 최대

+0

감사합니다 맥스 .. – darsha

4

어떤 프로그램을 사용하여 소스 코드를 편집하고 있습니까? javac이 싫어하는 BOM이 삽입 된 것으로 보입니다. 편집기의 설정에서 BOM을 비활성화 할 수 있어야합니다.

1

보인다. 16 진수 편집기에서 파일을 열고 이상하게 보이고 첫 번째 가져 오기 선 앞에 오는 첫 번째 바이트를 제거하십시오.

관련 문제