日期:2014-05-20  浏览次数:20694 次

写入EXCEL的问题
我使用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错误,请问这个写法那里不对么?谢谢!

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

应该是边界值计算错误. 看看是否超出最大值了.
------解决方案--------------------
挨个打印调试呀

------解决方案--------------------
c,r这个格子不是有效的
------解决方案--------------------
最好是设置断点单步调试一下
------解决方案--------------------
// 修改第6行6列的数据
Label label=new Label(5,5, "气喘吁吁 ");
ws.addCell(label);

------解决方案--------------------
还不如先做一个有表头的Excel模板, 加入数据后自动就有了格式
------解决方案--------------------
UP
------解决方案--------------------
晕了,我又试了下,不放到循环里,单个写就可以,但同样的循环用NEW那种方法就可以,那就应该是循环取的行列没问题吧?那为什么用getWritableCell就不行了呢??


---我估计是你的有些列的模式不是完全相同,所以在循环里不行