You’re just off by one letter it seems.
post__not_in => array(118)
You can also try adding an if statement, such as:
if($post->ID != 118) :
… run rest of code
Though not optimal, without seeing the rest of your template I can’t be certain.
Additional Edit:
<?php
$loop = new WP_Query(array(
'post_type' => 'cpt',
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => -1
));
if($loop->have_posts()) :while($loop->have_posts()) : $loop->the_post();
if($post->ID != 118) :
?>
The Title is: <?php the_title(); ?>. The ID is: <?php $post->ID; ?>
<?php endif; endwhile; endif; wp_reset_query(); ?>
Using this simple example on a test CPT I created, and creating a few test posts (plus using a random ID from one of them), the post did not display. If it still displays for you, it is either not the correct $post->ID, or you’re missing something from your examples.