小弟刚接触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);
} }}
我的代码 如下: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);
} }}
java.lang.NullPointerException是我的程序写的有问题吗??
如果用creat 就会 覆盖 这一行 原有的 数据
HSSFRow row = sheet.getRow(6);
if (row == null){
row = sheet.createRow(6);
}
HSSFCell cell=row.getCell(1);
if (cell == null){
cell = row.createCell(1);
}
如果是createrow 会不会把 正行其他单元格 中的内容覆盖了呀,,我就出现过这样的情况,蒙了
首单元是cell(0)不是cell(1)
row(6)是第七行
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行,所以不会覆盖原数据.