从excel文件中读取java.lang.ArrayIndexOutOfBoundsException

时间:2016-07-27 10:19:00

标签: java excel-2010 indexoutofboundsexception jxl

我正在尝试从Excel工作表中读取以下数据

Data

使用以下代码

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;

 public String readUsernameFromExcel() {
        File src = new File("C:/filepath.xls");

        try {

            Workbook wb = Workbook.getWorkbook(src);
            Sheet sh1 = wb.getSheet(0);
            Cell a2 = sh1.getCell(0, 2);
            data1 = a2.getContents().trim();


        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return data1;

    }

因此,当我尝试获取单元格0,1时,我可以正常使用用户名1000483。但是当我尝试阅读0,2并获得java.lang.ArrayIndexOutOfBoundsException: 2时。

我要做的是从Excel工作表中读取数据,将其作为String返回,然后将其传入登录我的应用程序。但是当我尝试0,2时,我似乎超出了预期。我尝试了一些东西,比如for循环

 for (int rows = 0; rows < sh1.getRows(); rows++) {
 Sheet sh1 = wb.getSheet(0);
            Cell a2 = sh1.getCell(0, 2);

}

我理解第一个数字是列,第二个是行。我也明白代码无法看到过去0,1。在尝试解决同样问题的其他解决方案后,我对如何让它看到剩下的表格感到茫然。

2 个答案:

答案 0 :(得分:1)

sh1.getRows()返回3.当循环从0开始时,sh1.getRows()需要递减1(如下所示)。下面的循环工作正常并正确返回值。

import java.io.File;
import java.io.IOException;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class Excel {

    public static void main(String[] args) {
        File src = new File("c:/filepath.xls");

        try {
            String data1;
            Workbook wb = Workbook.getWorkbook(src);
            Sheet sh1 = wb.getSheet(0);


            for (int rows = 1; rows < sh1.getRows(); rows++)  {
                for (int column = 0; column <= sh1.getColumns()-1; column++) {

                    Cell a2 = sh1.getCell(column, rows);
                    data1 = a2.getContents().trim();
                    System.out.println(data1);
                }
            }

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



}

以上代码可以正常工作并获取日期

答案 1 :(得分:0)

我和你使用相同的数据,我可以通过我的代码得到1000484值。

这是我的代码:

package com.jason.xls;

import java.io.File;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class XlsParser {

    public static void main(String[] args) {
        final String path = "/home/coder/filepath.xls";
        System.out.println(readUserNameFromXls(path));
    }

    public static String readUserNameFromXls(final String path) {
        File file = new File(path);
        try {
            Workbook wb = Workbook.getWorkbook(file);
            Sheet sheet = wb.getSheet(0);
            Cell a2 = sheet.getCell(0, 2);
            return a2.getContents().trim();
        } catch (Exception e) {
            return null;
        }
      }
 }

我从jxl.jar download here

下载jxl.jar

我的代码结果是:Code Result Image