@Override
  public void close() {
    try {
      int nbS = wb.getNumberOfSheets();
      for (int i = 0; i < nbS; i++) {
        Sheet s = wb.getSheetAt(i);
        if (s.getRow(0)
            != null) { // ceci arrive si on vide la mémoire tampon pour les grands fichiers. Dans ce
                       // cas pas de possibilité de traiter la mise en page de gros fichiers
          for (int j = 0; j < s.getRow(0).getLastCellNum(); j++) {
            Cell c = s.getRow(0).getCell(j);
            c.getSheet().autoSizeColumn(c.getColumnIndex());
          }

          Cell firstCell = s.getRow(0).getCell(0);
          Cell lastCell = s.getRow(0).getCell((int) s.getRow(0).getLastCellNum() - 1);
          s.setAutoFilter(
              new CellRangeAddress(
                  firstCell.getRowIndex(),
                  lastCell.getRowIndex(),
                  lastCell.getRowIndex(),
                  lastCell.getColumnIndex()));
        }
      }
      wb.write(fileOut);
      fileOut.flush();
      fileOut.close();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }