 field_collection_table.module | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/field_collection_table.module b/field_collection_table.module
index 26e64e8..67c8103 100644
--- a/field_collection_table.module
+++ b/field_collection_table.module
@@ -31,29 +31,46 @@ function field_collection_table_field_formatter_info() {
 function field_collection_table_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
   $element = array();
   $settings = $display['settings'];
+  $view_mode = !empty( $display['settings']['view_mode'] ) ? $display['settings']['view_mode'] : 'default';
 
   switch ($display['type']) {
     case 'field_collection_table_view':
       $header = array();
       $field_names = array();
       foreach (field_info_instances('field_collection_item', $field['field_name']) as $field_collection_item) {
-        $weight = $field_collection_item['display']['default']['weight'];
+        if(
+          $field_collection_item['display'][$view_mode]['type'] != 'hidden'
+        ) {
+          $weight = $field_collection_item['display'][$view_mode]['weight'];
         $field_names[$weight] = $field_collection_item['field_name'];
+
+          if(
+            $field_collection_item['display'][$view_mode]['label'] != 'hidden'
+          ) {
         $header[$weight] = array(
           'data' => $field_collection_item['label'],
           'class' => $field_names[$weight],
         );
+          } else {
+            $header[$weight] = '';
+          }
+        }
       }
       ksort($header);
       ksort($field_names);
 
+      // remove header if all labels are hidden
+      if( !array_filter( $header ) ) {
+        $header = array();
+      }
+
       $rows = array();
       foreach ($items as $delta => $item) {
         $field_collection = field_collection_field_get_entity($item);
         if (empty($field_collection)) {
           continue;
         }
-        $view = $field_collection->view();
+        $view = $field_collection->view( $view_mode );
         $content = $view['field_collection_item'][$field_collection->identifier()];
         $column = array();
         foreach ($field_names as $field_name) {
