https://issues.apache.org/bugzilla/show_bug.cgi?id=57270

            Bug ID: 57270
           Summary: java.lang.NullPointerException  at
                    org.apache.poi.POIXMLDocument.write(POIXMLDocument.jav
                    a:201)  at
                    ExcelCompare.WriteExcel.addRow(WriteExcel.java:103)
                    at
                    ExcelCompare.MainClassExcelCompare.main(MainClassExcel
                    Compare.java:122)
           Product: POI
           Version: 3.11-dev
          Hardware: PC
            Status: NEW
          Severity: blocker
          Priority: P2
         Component: XSSF
          Assignee: [email protected]
          Reporter: [email protected]

Created attachment 32230
  --> https://issues.apache.org/bugzilla/attachment.cgi?id=32230&action=edit
Demo1.xslx

package ExcelCompare;



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;




import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * Sample Java program to read and write Excel file in Java using Apache POI
 *
 */
public class MainClassExcelCompare {




    public static void main(String[] args) {

        try {


             int temp;

            File excel1 = new
File("C://Users/ckothakapax076037/Desktop/Demo1.xlsx");
            FileInputStream fis1 = new FileInputStream(excel1);
           XSSFWorkbook book1 = new XSSFWorkbook(fis1);
            XSSFSheet sheet1 = book1.getSheetAt(0);
            //org.apache.poi.ss.usermodel.Workbook book1 =
WorkbookFactory.create(fis1);
           // org.apache.poi.ss.usermodel.Sheet sheet1 = book1.getSheetAt(0);

            File excel2 = new
File("C://Users/ckothakapax076037/Desktop/Demo2.xlsx");
            FileInputStream fis2 = new FileInputStream(excel2);
          XSSFWorkbook book2 = new XSSFWorkbook(fis2);
          XSSFSheet sheet2 = book2.getSheetAt(0);
           // org.apache.poi.ss.usermodel.Workbook book2 =
WorkbookFactory.create(fis2);
            // org.apache.poi.ss.usermodel.Sheet sheet2 = book2.getSheetAt(0);

            WriteExcel obj1 = new WriteExcel();
           
obj1.setOutputFile("C://Users/ckothakapax076037/Desktop/Result.xlsx");

          //Get iterator to all the rows in current sheet
            Iterator<Row> itr1 = sheet1.iterator();
            Iterator<Row> itr2 = sheet2.iterator();

            // Iterating through all cells row by row
            while (itr1.hasNext()&&itr2.hasNext()) {

                temp=0;
                Row row1 = itr1.next();
                Row row2 = itr2.next();


                //Get iterator to all cells of current row
                Iterator<Cell> cellIterator1 = row1.cellIterator();
                Iterator<Cell> cellIterator2 = row2.cellIterator();

                CellStyle style = book1.createCellStyle();
                style = book1.createCellStyle();
                style.setFillForegroundColor(IndexedColors.RED.getIndex());
                style.setFillPattern(CellStyle.SOLID_FOREGROUND);
                while (cellIterator1.hasNext()&&cellIterator2.hasNext()) {

                    Cell cell1 = cellIterator1.next();
                    Cell cell2 = cellIterator2.next();
                    switch (cell1.getCellType()) {
                    case Cell.CELL_TYPE_STRING:
                        System.out.print(cell1.getStringCellValue() + "\t");
                        System.out.print(cell2.getStringCellValue() + "\t");
                       
if(!cell1.getStringCellValue().equalsIgnoreCase(cell2.getStringCellValue()))
                        {
                          temp++;
                          cell1.setCellStyle(style);
                        }
                        break;
                    case Cell.CELL_TYPE_NUMERIC:
                        System.out.print(cell1.getNumericCellValue() + "\t");
                        System.out.print(cell2.getNumericCellValue() + "\t");
                       
if(cell1.getNumericCellValue()!=cell2.getNumericCellValue())
                        {
                           temp++;
                           cell1.setCellStyle(style);
                        }
                        break;
                    case Cell.CELL_TYPE_BOOLEAN:
                        System.out.print(cell1.getBooleanCellValue() + "\t");
                        System.out.print(cell2.getBooleanCellValue() + "\t");
                        break;
                    case Cell.CELL_TYPE_BLANK:
                          System.out.print(cell1.getNumericCellValue() + "\t");
                          System.out.print(cell2.getNumericCellValue() + "\t");
                          if(cell2.getStringCellValue()!=" ")
                          {
                           temp++;
                           cell1.setCellStyle(style);
                          }
                    break;  

                    default:

                  }

                } 
                System.out.print("\n");
                System.out.print("Flag value:"+temp);
                System.out.print("\n");
                if (temp>=1)
                 {
                  obj1.addRow(cellIterator1,cellIterator2);
                 }
              }

            book1.close();
            fis1.close();
            book2.close();
            fis2.close();
            obj1.closerActivity();


              } catch (FileNotFoundException fe) {
                  fe.printStackTrace();
              } catch (IOException ie) {
                  ie.printStackTrace();
              } catch (Exception ee) {
                  ee.printStackTrace();
              }

        } 

    }



/* sub class*/



package ExcelCompare;




import java.io.FileOutputStream;
import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcel {




private static String OutputFile;
private static XSSFWorkbook myWorkBook = new XSSFWorkbook();
private static XSSFSheet mySheet = myWorkBook.createSheet("Report");

public static int i=0;


public void setOutputFile(String OutputFile1) {

    OutputFile = OutputFile1;


   }

  public void addRow(Iterator<Cell> cellIterator1,Iterator<Cell> cellIterator2)
{

      try {


        XSSFRow row = mySheet.createRow(i++);

        while (cellIterator1.hasNext()) {

              int j=0;
              Cell cell1 = cellIterator1.next();

         switch (cell1.getCellType()) {

            case Cell.CELL_TYPE_STRING:

                System.out.print(cell1.getStringCellValue() + "\t");
                row.createCell(j).setCellValue(cell1.getStringCellValue());

            break;
            case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell1.getStringCellValue() + "\t");
                  row.createCell(j).setCellValue(cell1.getNumericCellValue());
            break; 
            case Cell.CELL_TYPE_BLANK:
                  System.out.print(cell1.getStringCellValue() + "\t");
                  row.createCell(j).setCellValue(cell1.getStringCellValue());
            break; 
            default:
                  System.out.print(cell1.getStringCellValue() + "\t");
                  row.createCell(j).setCellValue(cell1.getStringCellValue());
         }
        j++;
    }

    while (cellIterator2.hasNext()) {


        int j=0;
        Cell cell2 = cellIterator2.next();


        switch (cell2.getCellType()) {



        case Cell.CELL_TYPE_STRING:
              System.out.print(cell2.getStringCellValue() + "\t");
            row.createCell(j).setCellValue(cell2.getStringCellValue());

        break;
        case Cell.CELL_TYPE_NUMERIC:
            System.out.print(cell2.getStringCellValue() + "\t");
             row.createCell(j).setCellValue(cell2.getNumericCellValue());

        break; 
        case Cell.CELL_TYPE_BLANK:
            System.out.print(cell2.getStringCellValue() + "\t");
             row.createCell(j).setCellValue(cell2.getStringCellValue());

        break; 
        default:
             System.out.print(cell2.getStringCellValue() + "\t");
             row.createCell(j).setCellValue(cell2.getStringCellValue());

    }
        j++;
    }
    FileOutputStream  out = new FileOutputStream(OutputFile);
    System.out.print("\n");
     myWorkBook.write(out);
     out.close();
     myWorkBook.close();



    } catch (Exception e) {
        e.printStackTrace();
    }
}
public void closerActivity()
{

    try {
         System.out.println(" Hi i am in close");

    } catch (Exception e) {
        e.printStackTrace();
    }

}

}





I want to compare two excel sheets Demo1.xslx and Demo2.xslx and put result
back in to Result.xslx

I dont want put everything in Result.xslx but only rows which doesnot matched
in both Demo1 and Demo2

I also want to highlight the cells in Demo1 which are not same as Demo2.


Please help me out..

Thanks..

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to