我使用JXL向EXCEL模板中写入一些单元格的内容,代码如下:
Workbook wb = Workbook.getWorkbook(new File(strFileName));       
ByteArrayOutputStream targetFile = new ByteArrayOutputStream();     
WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);      
WritableSheet wws = wwb.getSheet(0);  
for  (int r=3;r<=26;r++)
{
for  (int c=4;c<=7;c++)   

WritableCell wc1 = wws.getWritableCell(c,r);
Label sex = (Label)wc1;
sex.setString("a");
}
}
但总是报NULL错误,请问这个写法那里不对么?谢谢!

解决方案 »

  1.   

    单步跟踪看是那行报错,那一行的某个对象就是null,或者捕获这个异常,就知道那一行了,null的问题最好解决的,慢慢来,空指针就是说的你的对象在new的时候失败了或者根本没用new,从其他的地方没用取得对象,例如文件,如果路径不对找不到就无法实例化file对象
      

  2.   

    就是setString这报的错,我用NEW的方法就可以正常写入,但我要保持原由单元格的格式,所以想用这个方法,但就是报错,不解,请大侠指点.
      

  3.   

    for  (int r=3;r<=26;r++)
    {
    for  (int c=4;c<=7;c++)   

    WritableCell wc1 = wws.getWritableCell(c,r);
    Label sex = (Label)wc1;
    sex.setString("a");
    }
    }应该是边界值计算错误. 看看是否超出最大值了.
      

  4.   

    应该没有超出边界值,我换成
    for  (int r=3;r<=6;r++)
    {
    for  (int c=4;c<=7;c++)   

    WritableCell wc1 = wws.getWritableCell(c,r);
    Label sex = (Label)wc1;
    sex.setString("a");
    }
    }
    也不行,而且我用:
    wws.addCell(new Label(c,r,"0"));
    这样是可以正常写入的
      

  5.   

    // 修改第6行6列的数据    
    Label label=new Label(5,5,"气喘吁吁 "); 
    ws.addCell(label);
      

  6.   

    buctreny(reny) :
    这样没问题,但把单元格的格式弄没了
      

  7.   

    还不如先做一个有表头的Excel模板, 加入数据后自动就有了格式
      

  8.   

    晕了,我又试了下,不放到循环里,单个写就可以,但同样的循环用NEW那种方法就可以,那就应该是循环取的行列没问题吧?那为什么用getWritableCell就不行了呢??
      

  9.   

    晕了,我又试了下,不放到循环里,单个写就可以,但同样的循环用NEW那种方法就可以,那就应该是循环取的行列没问题吧?那为什么用getWritableCell就不行了呢??
    ---我估计是你的有些列的模式不是完全相同,所以在循环里不行
      

  10.   

    AWUSOFT(如果可以了,请结贴,谢谢!) :
    感谢指点,请问你说的模式如何设置?谢谢!