[code]
import java.io.FileInputStream;
import java.io.InputStream;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;public class II { public static void main(String[] args) throws ArrayIndexOutOfBoundsException { String path = "test.xls"; try { InputStream is = new FileInputStream(path); Workbook wb = Workbook.getWorkbook(is); Sheet st = wb.getSheet(0); for (int k = 1; k < st.getRows(); k++) {
System.out.println(st.getRows()); for (int i = 1; i <= st.getColumns(); i++) { System.out.println(st.getColumns()); Cell cell = st.getCell(k,i); String contents = cell.getContents(); System.out.println(st.getCell(k, i) + contents + "\n"); }
} } catch (Exception e) {
e.printStackTrace(); }
System.out.println("完成导出"); }
}
[/code]
报错信息:
[code]
2
3
java.lang.ArrayIndexOutOfBoundsException: 2
at jxl.read.biff.SheetImpl.getCell(SheetImpl.java:312)
at II.main(II.java:30)
jxl.read.biff.LabelSSTRecord@5afd29你好吗3
完成导出
[/code]
这是我编写的读取excel表中单元格的信息,运行后,总是报错:数组越界,实在改不明白了
请大家帮我看看,应该如何修改

解决方案 »

  1.   

    import java.io.FileInputStream;
    import java.io.InputStream;import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;public class RedExcel { public static void main(String[] args) { String path = "test.xls"; try { InputStream is = new FileInputStream(path); Workbook wb = Workbook.getWorkbook(is); Sheet st = wb.getSheet(0); for (int k = 0; k <= st.getRows(); k++) {

    System.out.println(st.getRows());
    for (int i = 0; i <=st.getColumns(); i++){ System.out.println(st.getColumns()); Cell cell = st.getCell(k,i); String contents = cell.getContents(); System.out.println(st.getCell(k, i) + contents + "\n"); }
    System.out.println(k);
    }
    } catch (Exception e) {
    e.printStackTrace(); }
    System.out.println("数据导入完成!"); }
    }
      

  2.   

    for   (int   k   =   0;   k   <   st.getRows();   k++)   { 
    楼主你多了个等号
      

  3.   

    两个for循环中间的循环条件都多了"="。
    k   <=   st.getRows();   
    i   <=st.getColumns();   去掉就好了。
      

  4.   

    得到第i行第j列单元格:
    Cell cell = sheet1.getCell(j,i);
    输出:
    System.out.println(cell.getContents());注意:得到第i行第j列单元格的方法中,第一个参数表示列,第二个参数才表示行。
    eg:第一行第二列:Cell cell = sheet1.getCell(1,0);而不是sheet1.getCell(0,1)
    你的刚好是写反了,当然会抛数组越界异常了啊。