title: Save Excel document Apache POI
body: <p>I need to create informs from an excel document, I'm using Java and Apache POI. Here is my code:</p>
  
  <pre><code>    //Get path with JFileChooser
      public static String LeeRuta(){
          JFileChooser chooser = new JFileChooser();
          chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
          chooser.showDialog(chooser, "Seleccionar");
          File f =chooser.getSelectedFile();
          File camino = f.getAbsoluteFile();
          String ruta = camino.getAbsolutePath();
          return ruta;
      }
  
    //main
    public static void main(String args[]) {
      String ruta=LeeRuta();
  
      /* Don't know if neccesary, but it didn't works with or without it
      InputStream inp;
      try {
          inp = new FileInputStream(ruta);
      } catch (FileNotFoundException ex) {
          Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex);
      }
      */
  
      Workbook exceldoc = null;
  
      // Opening file
        try {
           exceldoc = WorkbookFactory.create(new File(ruta));
          //wb = WorkbookFactory.create(new File(ruta));
      } catch (InvalidFormatException | IOException e) {
          e.printStackTrace();
      }
  
  
      //Selecting the sheet
      String nombredoc = exceldoc.getSheetName(0);
      Sheet hoja = exceldoc.getSheet(nombredoc);
  
  
          //Selecting the cell
          Cell celda = hoja.getRow(1).getCell(1);
  //        System.out.println(celda);
          System.out.println(hoja.getRow(2).getCell(3));
  
          //Variables
          int anyo = 2014;
          String ota = "OTa 158";
  
          //Setting Cells value
          hoja.getRow(2).getCell(4).setCellValue(anyo);
          hoja.getRow(2).getCell(5).setCellValue(ota);
  
         //If I print here cell values, I see that values has been set.
  
          //Saving
          try {
              //hoja.getRow(3).getCell(4).setCellValue(fecha);
              FileOutputStream out = new FileOutputStream("C:\\Documents and Settings\\INGENIERIA2\\Mis documentos\\Informe.xls");
          } catch (FileNotFoundException ex) {
              Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex);
          }
          try {
              exceldoc.write(out);
          } catch (IOException ex) {
              Logger.getLogger(PruebaExcel.class.getName()).log(Level.SEVERE, null, ex);
          }
      }
  </code></pre>
  
  <p>The problem is that Informe.xls file is empty (file size = 0 KB) and Excel says its corrupted or damaged. I suppose I'm not doing well the output stream and the write, but don't know how to fix it.</p>