我正在尝试从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();
}
}
}
上面的代码可以正常工作并获取日期