小弟刚接触poi不久,想用poi 做一个 能够添加 指定的单元格位置 内容 的程序,但是问题就出现了, 我用getrow()的方法,如果 这行的第一个单元格为空,程序就会有异常抛出,, 但是 如果 我要是用 creatrow(), 就会把 这行 其他单元格里的内容 覆盖了,变成了空值。。 能不能 帮小弟 解决下??
我的代码 如下:import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
public class test { /**
 * @param args
 */
public static void main(String[] args) {
// TODO 自动生成方法存根
try{

FileOutputStream fileOut = null;


File myxls = new File("1.xls");
FileInputStream fis = new FileInputStream(myxls);
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(fis)); HSSFSheet sheet = wb.getSheetAt(0);


HSSFRow row = sheet.getRow(6);

HSSFCell cell=row.getCell(1);

if(null   !=   sheet.getRow((short)6) )
{
System.out.println("ok");
}

else{
System.out.println("111");
}


fileOut = new FileOutputStream("1.xls");

fis.close();

wb.write(fileOut);

fileOut.close();


}catch(Exception e){
String s=e.toString();
System.out.println(s);

} }}
 

解决方案 »

  1.   

    总是提示
    java.lang.NullPointerException是我的程序写的有问题吗??
      

  2.   


    如果用creat 就会 覆盖 这一行 原有的 数据
      

  3.   

    get之后需要测试是否是null然后再操作
    HSSFRow row = sheet.getRow(6);    
        if (row == null){
            row = sheet.createRow(6);
        }
        HSSFCell cell=row.getCell(1);
        if (cell == null){
            cell = row.createCell(1);
        }
      

  4.   


    如果是createrow 会不会把 正行其他单元格 中的内容覆盖了呀,,我就出现过这样的情况,蒙了
      

  5.   

    不知道 您遇到过这样的情况不,,如果这样的首个单元格为空的话,, poi就认为这个整行为空吧,是不是我的poi有问题呀
      

  6.   

    另外,可能你已经知道,只是提醒下
    首单元是cell(0)不是cell(1)
    row(6)是第七行
      

  7.   

    我的poi是3.7版的, 
    HSSFRow row = sheet.getRow(6); 只有整行都是空白时,才返回null,该行任意一个单元格有数据时,不会返回null. 
    HSSFRow row = sheet.getRow(6); 
    if (row == null){
    row = sheet.createRow(6);
    }
    HSSFCell cell=row.getCell(1);
    if (cell == null){
    使用前要判断一下.
    sheet.createRow(6);只有整行为空白时,才要创建row,因为是null行,所以不会覆盖原数据.