diff --git a/includes/webform.submissions.inc b/includes/webform.submissions.inc
index dccf12d..9544174 100644
--- a/includes/webform.submissions.inc
+++ b/includes/webform.submissions.inc
@@ -642,19 +642,31 @@ function webform_submission_render($node, $submission, $email, $format, $exclude
     foreach ($excluded_components as $cid) {
       unset($components[$cid]);
     }
-    if (!empty($email['exclude_empty'])) {
-      foreach ($submission->data as $cid => $data) {
-        // Caution. Grids store their data in an array index by question key.
-        if (implode($data) == '') {
-          unset($components[$cid]);
-        }
-      }
-    }
   }
 
   module_load_include('inc', 'webform', 'includes/webform.components');
   _webform_components_tree_build($components, $component_tree, 0, $page_count);
 
+  if (!empty($email['exclude_empty'])) {
+    foreach ($submission->data as $cid => $data) {
+      // Caution. Grids store their data in an array index by question key.
+      if (implode($data) == '') {
+        $pid = $components[$cid]['pid'];
+        unset($components[$cid]);
+        unset($component_tree['children'][$cid]);
+        if ( $pid > 0 ) {
+          // Remove child form parent in tree to prevent rendering it.
+          unset($component_tree['children'][$pid]['children'][$cid]);
+
+          if ( isset($component_tree['children'][$pid]['children']) && empty($component_tree['children'][$pid]['children']) ) {
+            unset($component_tree['children'][$pid]);
+            unset($components[$pid]);
+          }
+        }
+      }
+    }
+  }
+
   // Make sure at least one field is available
   if (isset($component_tree['children'])) {
     // Recursively add components to the form.
