2012-01-30 35 views
1

我正在尝试使用java读取excel文件。编译程序时,我收到错误为非法字符。帮助我解决这个问题。这里是代码java中的非法字符错误

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(); 
    } 

} 
} 

在编译程序我得到错误,如

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 

任何人都可以帮我解决这个问题。

+0

在文件的开头有一些不可见的字符。如果您不能修复它们,只需将源代码复制到一个新文件中并删除旧文件。 – kba 2012-01-30 13:42:26

+0

你可以发布input.xlsx – L7ColWinters 2012-01-30 13:43:06

+0

看起来你已经有'∩╗┐'在你的源代码...当你在记事本中打开你的.java文件时会发生什么? – beny23 2012-01-30 13:43:27

回答

5

我很肯定这是BOMs(Byte Order Marks)。确保你使用正确的编码。也许在其他编辑器中打开文件并重新保存以删除物料清单。例如,Nodepad ++可以帮助您。

祝你好运, 最大

+0

感谢马克斯..它的工作 – darsha 2012-01-30 15:18:21

4

你用什么程序来编辑源代码?它看起来像插入一个BOM,这是javac不喜欢。应该可以在编辑器的设置中禁用BOM。

1

看起来你有一个BOM的问题。在十六进制编辑器中打开文件,并删除看起来很奇怪的第一个字节,并在第一个导入行之前出现。