setCellValue不起作用

时间:2017-04-11 09:02:38

标签: java excel apache-poi

我无法设置单元格的值,如果我尝试这个就行了

if(1==1){
celltofill.setCellValue("test");
}

但是一旦进入if条件,它就会显示syso中的内容,但不会在单元格中插入值。

关于如何解决这个问题的任何想法?

这是我的代码:

public class testexcel {


    public static void main(String[] args) throws InvalidFormatException, IOException, ParseException{

        FileInputStream fis = new FileInputStream("D:\\test6.xlsx");
        XSSFWorkbook workbook = new XSSFWorkbook(fis);
        FileOutputStream fos=new FileOutputStream("D:\\edit6.xlsx");
        XSSFSheet sheet = workbook.getSheetAt(0);
        XSSFSheet sheet2 = workbook.getSheetAt(1);


    for(int i=1; i <= sheet.getLastRowNum(); i++) {
        for(int i1=1;i1<sheet2.getLastRowNum();i1++){

        Row row = sheet.getRow(i);
        Cell cell =  row.getCell(2);    
        Row row2 = sheet2.getRow(i1);
        Cell cell2 =  row2.getCell(0);
        Cell celltofill= row.createCell(5);
        Cell cellres= row2.getCell(1);


        if((cell.getStringCellValue()).equals(cell2.getStringCellValue())){
            System.out.println((cell.getStringCellValue())+" equals "+cell2.getStringCellValue());
            celltofill.setCellType(Cell.CELL_TYPE_STRING);
            System.out.println("cell filled with "+cellres.getStringCellValue());
            celltofill.setCellValue(cellres.getStringCellValue());
        }

        }
    }

    workbook.write(fos);
    fos.close();


}
}

1 个答案:

答案 0 :(得分:1)

row.createCell(5)正如它所说的那样。每次调用它时都会创建一个新的空单元格。而且,您sheet2中的每一行都会一次又一次地调用它,尽管它是sheet中的一个单元格。因此,即使标准未填满,也会在代码中创建新的空单元格。

也许:

...

for(int i=1; i <= sheet.getLastRowNum(); i++) {
   Row row = sheet.getRow(i);
   Cell cell =  row.getCell(2);
   Cell celltofill= row.getCell(5);
   if (celltofill == null) celltofill = row.createCell(5);

   for(int i1=1;i1<sheet2.getLastRowNum();i1++){
    Row row2 = sheet2.getRow(i1);
    Cell cell2 =  row2.getCell(0);
    Cell cellres= row2.getCell(1);

...

会更符合您的要求吗?