Hajar M
Hajar M

Reputation: 69

setCellValue not working

i can't set the value of cell ,it works if i try this

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

but once it enters the if condition it displays what's in syso but doesn't insert values in the cell.

any ideas about how can i solve this isssue?

here is my code:

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();


}
}

Upvotes: 0

Views: 5884

Answers (1)

Axel Richter
Axel Richter

Reputation: 61852

row.createCell(5) does exactly what it says. It creates a new empty cell every time it is called. And you are calling it for every row in sheet2 again and again although it is a cell in sheet. So even if the criterions are not fullfilled, the new empty cell is been created already in your code.

Maybe:

...

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);

...

will be more what you want?

Upvotes: 1

Related Questions