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



用下面的代码

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。在尝试解决同一问题的其他解决方案之后,如何获得它来查看工作表的其余部分,我感到茫然。

最佳答案

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



}


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

07-26 06:04