InputStream is = null;
FileInputStream fn = null;
static String[]r1=null;
static String[]r2=null;
int cs = 0;
int rs = 0;
Workbook rb=null;
public jxl(String path){
this.path = path;
demo();
}
public void demo(){
System.out.println("bb");
try {
fn = new FileInputStream(path);
is = fn;
System.out.println("cc");
rb = Workbook.getWorkbook(is);
System.out.println("dd");
Sheet s = rb.getSheet(0);// 此处只读取第一个sheet内容
System.out.println("ee");
cs = s.getColumns();
rs = s.getRows();
System.out.println("cs:"+cs+",rs:"+rs);
r1= new String[rs];
r2= new String[rs];
for(int i =0;i<rs;i++){
r1[i]=s.getCell(1,i).getContents();
}
for(int i =0;i<rs;i++){
r2[i]=s.getCell(4,i).getContents();
}
} catch (Exception e) {
System.out.println(e.toString());
}finally {
try {
fn.close();
is.close();
rb.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
程序要循环demo 但是测试就到那句话就不在循环了,就解决办法
你的两个代码,第一个是打印第一行所有数据,第二个是打印第四行所有数据,这两个for完全可以合并成一个的啊。
如果我没理解错的话,你是想打印某一行的数据,那么for的边界就应该是列总数的,代码最后应该打印两个数组的信息,才能判断读取是否正确。
你的描述可能是进入异常分支的了,因为getCell(row,col)你调用1,i而,i的范围你用的是rs总行数,肯定错误,应该是cs总列数。
for(int i =0;i<cs;i++){
r1[i]=s.getCell(1,i).getContents();
r2[i]=s.getCell(4,i).getContents();
}
System.out.println("第一行所有数据:"+Arrays.toString(r1));
System.out.println("第四行所有数据:"+Arrays.toString(r2));