title: java converting .xls to csv
body: <p>I have converted to .xls file to a csv file using the Apache POI library. I iterate each row and cell, put a comma, and append to the buffered reader. The cell types numeric and string are converted perfectly.  If a blank cell comes I put a comma, but blank values are not detected by the code. How to do it? Please help me out.</p>
  
  <pre><code>import java.io.*;
  import java.util.Iterator;
  import java.text.DateFormat;
  import java.io.IOException;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import java.text.DecimalFormat;
  import java.text.NumberFormat;
  import java.math.BigDecimal;
  import org.apache.poi.hssf.usermodel.HSSFSheet;
  import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  import org.apache.poi.ss.usermodel.Cell;
  import org.apache.poi.ss.usermodel.Row;
  import org.apache.poi.xssf.usermodel.XSSFSheet;
  import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  import org.apache.poi.xssf.usermodel.XSSFRichTextString;
  import org.apache.poi.hssf.usermodel.HSSFDateUtil;
  import org.apache.poi.ss.usermodel.DateUtil;
  class convert {
  
  static void convertToXls(File inputFile, File outputFile)
  {
  StringBuffer cellDData = new StringBuffer();
  String cellDDataString=null;
  try
  {
          FileOutputStream fos = new FileOutputStream(outputFile);
  
          HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(inputFile));
          HSSFSheet sheet = workbook.getSheetAt(0);
          Cell cell=null;
          Row row;
          int previousCell;
          int currentCell;
          Iterator&lt;Row&gt; rowIterator = sheet.iterator();
          while (rowIterator.hasNext())
          {
          previousCell = -1;
          currentCell = 0;
          row = rowIterator.next();
           System.out.println("ROW:--&gt;");
          Iterator&lt;Cell&gt; cellIterator = row.cellIterator();
          while (cellIterator.hasNext())
  {
            // System.out.println("true" +cellIterator.hasNext());
          cell = cellIterator.next();
          currentCell = cell.getColumnIndex();
  
  
          System.out.println("CELL:--&gt;" +cell.toString());
          try{
          switch (cell.getCellType())
          {
  
          case Cell.CELL_TYPE_BOOLEAN:
                  cellDData.append(cell.getBooleanCellValue() + ",");
                  System.out.println("boo"+ cell.getBooleanCellValue());
                  break;
  
          case Cell.CELL_TYPE_NUMERIC:
                           if (DateUtil.isCellDateFormatted(cell))
                          {
  
                    //      System.out.println(cell.getDateCellValue());
                          SimpleDateFormat dateFormat = new SimpleDateFormat(
                              "dd/MM/yyyy");
                           String  strCellValue = dateFormat.format(cell.getDateCellValue());
                  //      System.out.println("date:"+strCellValue);
                          cellDData.append(strCellValue +",");
                      }
                         else {
                          System.out.println(cell.getNumericCellValue());
                          Double value = cell.getNumericCellValue();
                      Long longValue = value.longValue();
                      String strCellValue1 = new String(longValue.toString());
                  //      System.out.println("number:"+strCellValue1);
                           cellDData.append(strCellValue1 +",");
                      }
          //      cellDData.append(cell.getNumericCellValue() + ",");
                  //String  i=(new java.text.DecimalFormat("0").format( cell.getNumericCellValue()+"," ));
                  //System.out.println("number"+cell.getNumericCellValue());
                  break;
  
          case Cell.CELL_TYPE_STRING:
     String out=cell.getRichStringCellValue().getString();
                  cellDData.append(cell.getRichStringCellValue().getString() + ",");
                  //System.out.println("string"+cell.getStringCellValue());
                  break;
  
          case Cell.CELL_TYPE_BLANK:
                  cellDData.append("" + "THIS IS BLANK");
                  System.out.print("THIS IS BLANK");
                  break;
  
          default:
                  break;
          }}
  catch (NullPointerException e) {
                      //do something clever with the exception
                          System.out.println("nullException"+e.getMessage());
                  }
  
  }
          int len=cellDData.length() - 1;
  //      System.out.println("length:"+len);
  //      System.out.println("length1:"+cellDData.length());
         cellDData.replace(cellDData.length() - 1, cellDData.length() , "");
          cellDData.append("\n");
          }
          //cellDData.append("\n");
  
  
  //String out=cellDData.toString();
  //System.out.println("res"+out);
  
  //String o = out.substring(0, out.lastIndexOf(","));
  //System.out.println("final"+o);
  fos.write(cellDData.toString().getBytes());
  //fos.write(cellDDataString.getBytes());
  fos.close();
  
  }
  catch (FileNotFoundException e)
  {
      System.err.println("Exception" + e.getMessage());
  }
  catch (IOException e)
  {
          System.err.println("Exception" + e.getMessage());
  }
  }
  
  public static void main(String[] args) throws IOException
  {
          File inputFile = new File("/bwdev/kadfeb/xls/Accredo_Kadmon_Monthly_02282014.xls");
          File outputFile = new File("output1.csv");
          convertToXls(inputFile, outputFile);
  }
  </code></pre>