u013967628
森林屿麓
2015-12-25 03:58
采纳率: 100%
浏览 1.7k
已采纳

rb = Workbook.getWorkbook(is)在for里面截止到这句话就不循环了为什么?

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  但是测试就到那句话就不在循环了,就解决办法
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • wojiushiwo945you
    毕小宝 2015-12-25 05:57
    已采纳

    你的两个代码,第一个是打印第一行所有数据,第二个是打印第四行所有数据,这两个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));
    
    点赞 评论

相关推荐