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