title: How to remove empty cells in excel using java and apache poi
body: <p>Using Apache POI, I am extracting values from an Excel file and writing to another Excel file. </p>
  
  <p>However I am getting empty cells in the output Excel file. How do I:</p>
  
  <ul>
  <li>detect at the end which rows are empty</li>
  <li>and then remove those rows?</li>
  </ul>
  
  <p>I have added this part of code to remove rows. I am able to detect the rows which are empty but not able to remove it.</p>
  
  <pre><code>Please tell how to implement in the above code I added.
  </code></pre>
  
  <p>I did by adding this</p>
  
  <pre><code>public class Nlp_health {
  private static boolean isRowEmpty;
  
  public static void main(String[] args) throws IOException, ParseException, RowsExceededException, WriteException
  {
      XSSFWorkbook wb = new XSSFWorkbook();
      XSSFSheet sheet1 = wb.createSheet("Sheet1");
      XSSFSheet sheet2 = wb.createSheet("Sheet2");
      XSSFSheet sheet3 = wb.createSheet("Sheet3");
      XSSFRow row_1 = sheet1.createRow((char)0);
      XSSFRow row_2 = sheet2.createRow((char)0);
      XSSFRow row_3 = sheet3.createRow((char)0);
      row_1.createCell(0).setCellValue("Column1");
      row_1.createCell(1).setCellValue("Column2");
  
      row_2.createCell(0).setCellValue("Column1");
      row_2.createCell(1).setCellValue("Column2");
  
      row_3.createCell(0).setCellValue("Column1");
      row_3.createCell(1).setCellValue("Column2");
  
      FileOutputStream fileOut = new FileOutputStream("C:\\Users\\Master\\Desktop\\Nlp_health3.xlsx");
      wb.write(fileOut);
      fileOut.close();
  
  Xls_Reader datatable = new Xls_Reader("C:\\Users\\Master\\Desktop\\SMB NLP Projects to Update 20140722.xlsx");
  Xls_Reader datatable1 = new Xls_Reader("C:\\Users\\Master\\Desktop\\Nlp_health.xlsx");
  int rows_count = datatable.getRowCount("Projects View");
  System.out.println("Total number of rows = " + rows_count);
  System.out.println();
  for(int i=4; i&lt;rows_count;i++)
  {
      String milestone = datatable.getCellData("Projects View", "SMB Project Health", i);
      String project = datatable.getCellData("Projects View", "Name", i);
  {
      //System.out.println(value);
      if (milestone.equals("Yellow")){
          System.out.println("1st step = " + project);
  
            datatable1.setCellData("Sheet1", "Column1", i, project);
            datatable1.setCellData("Sheet1", "Column2", i, "Yellow");
            //System.out.println(project);
      }
      if(milestone.equals("Red")){
          System.out.println("2nd step = " + project);
          datatable1.setCellData("Sheet1", "Column2", i, "Red");
          datatable1.setCellData("Sheet1", "Column1", i, project);
  
      }
  
      }
  }
  
  int rows_count_new = datatable1.getRowCount("Sheet1");
  System.out.println("Number of rows are" + rows_count_new );
  for (int j = 0; j &lt;= rows_count_new; j++){
      String empty_cells = datatable1.getCellData("Sheet1", "Column1", j);
      System.out.println("Empty step1 = " + empty_cells);
       if(sheet1.getRow(j)==null){
              sheet1.shiftRows(j + 1, sheet1.getLastRowNum(), -1);
              j--;
          continue;
          }
          for(int k =0; k&lt;sheet1.getRow(j).getLastCellNum();k++){
              if(sheet1.getRow(j).getCell(k).toString().trim().equals("")){
                  isRowEmpty=true;
              }else {
                  isRowEmpty=false;
                  break;
              }
          }
          if(isRowEmpty==true){
              sheet1.shiftRows(j + 1, sheet1.getLastRowNum(), -1);
              j--;
          }
  
  
  }
  
  
  
  
  
  }
  </code></pre>
  
  <p>}</p>