First you must got code from here

Remove some columns with provided headers

    public void deleteColumnsWithHeader(String columnHeader){
        SXSSFSheet sheet = (SXSSFSheet)sh;
        Row row     = sheet.getRow( 0 );
        if ( row == null ){
            return;
        }

        int lastColumn = row.getLastCellNum();

        for ( int x=lastColumn; x >= 0; x-- ){
            Cell headerCell    = row.getCell(x);
            if ( headerCell != null && headerCell.getStringCellValue() != null && 
                 headerCell.getStringCellValue().equalsIgnoreCase(columnHeader)){
                deleteColumn(x);
            }
        }
    }

Keep only columns with provided headers

    public void keepOnlyColumnsWithHeaders(List<string> columnHeaders){
        SXSSFSheet sheet = (SXSSFSheet)sh;
        Row row     = sheet.getRow( 0 );
        if ( row == null ){
            return;
        }

        int lastColumn = row.getLastCellNum();

        for ( int x=lastColumn; x >= 0; x-- ){
            Cell headerCell    = row.getCell(x);
            if ( headerCell != null && headerCell.getStringCellValue() != null && 
                 !columnHeaders.contains(headerCell.getStringCellValue())){
                deleteColumn(x);
            }
        }
    }