java.lang.ArrayIndexOutOfBoundsException 从 excel 文件读取

java.lang.ArrayIndexOutOfBoundsException reading from excel file

我正在尝试从 Excel sheet

中读取以下数据

用下面的代码

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 sheet return 中读取数据作为 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。在尝试了同一问题的其他解决方案后,我不知道如何让它看到 sheet 的其余部分。

我和你使用相同的数据,我可以通过我的代码获得 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

sh1.getRows() returns 3. 由于循环从0开始,所以sh1.getRows()需要减1(如下)。下面的循环工作正常并且 returns 值正确。

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



}

上面的代码可以正常运行并正确获取日期