diff --git a/core/modules/views/lib/Drupal/views/Tests/Plugin/StyleTableUnitTest.php b/core/modules/views/lib/Drupal/views/Tests/Plugin/StyleTableUnitTest.php
index 6af4636..f5548f7 100644
--- a/core/modules/views/lib/Drupal/views/Tests/Plugin/StyleTableUnitTest.php
+++ b/core/modules/views/lib/Drupal/views/Tests/Plugin/StyleTableUnitTest.php
@@ -127,6 +127,15 @@ public function testTable() {
 
     $view->destroy();
 
+    // Excluded field to make sure its wrapping td doesn't show.
+    $this->prepareView($view);
+    $style_plugin = $view->style_plugin;
+    $view->field['name']->options['exclude'] = TRUE;
+    $output = $view->preview();
+    $output = drupal_render($output);
+    $this->assertFalse(strpos($output, 'views-field-name') !== FALSE, "Excluded field's wrapper was not rendered.");
+    $view->destroy();
+
     // Render a non empty result, and ensure that the empty area handler is not
     // rendered.
     $this->executeView($view);
diff --git a/core/modules/views/views.theme.inc b/core/modules/views/views.theme.inc
index 522552e..0f44cd9 100644
--- a/core/modules/views/views.theme.inc
+++ b/core/modules/views/views.theme.inc
@@ -616,27 +616,38 @@ function template_preprocess_views_view_table(&$variables) {
 
     // Render each field into its appropriate column.
     foreach ($result as $num => $row) {
+
+      // Skip building the attributes and content if the field is to be excluded
+      // from the display.
+      if (!empty($fields[$field]->options['exclude'])) {
+        continue;
+      }
+
+      // Reference to the column in the loop to make the code easier to read.
+      $column_reference =& $variables['rows'][$num]['columns'][$column];
+
       // Add field classes.
-      $variables['rows'][$num]['columns'][$column]['attributes'] = array();
+      $column_reference['attributes'] = array();
       if ($fields[$field]->options['element_default_classes']) {
-        $variables['rows'][$num]['columns'][$column]['attributes']['class'][] = 'views-field';
-        $variables['rows'][$num]['columns'][$column]['attributes']['class'][] = 'views-field-' . $variables['fields'][$field];
+        $column_reference['attributes']['class'][] = 'views-field';
+        $column_reference['attributes']['class'][] = 'views-field-' . $variables['fields'][$field];
       }
 
       if ($classes = $fields[$field]->elementClasses($num)) {
-        $variables['rows'][$num]['columns'][$column]['attributes']['class'][] = $classes;
+        $column_reference['attributes']['class'][] = $classes;
       }
+
       // Add responsive header classes.
       if (!empty($options['info'][$field]['responsive'])) {
-        $variables['rows'][$num]['columns'][$column]['attributes']['class'][] = $options['info'][$field]['responsive'];
+        $column_reference['attributes']['class'][] = $options['info'][$field]['responsive'];
       }
 
       // Improves accessibility of complex tables.
       if (isset($variables['header'][$field]['attributes']['id'])) {
-        $variables['rows'][$num]['columns'][$column]['attributes']['headers'] = array($variables['header'][$field]['attributes']['id']);
+        $column_reference['attributes']['headers'] = array($variables['header'][$field]['attributes']['id']);
       }
 
-      if (!empty($fields[$field]) && empty($fields[$field]->options['exclude'])) {
+      if (!empty($fields[$field])) {
         $field_output = $handler->getField($num, $field);
         $element_type = $fields[$field]->elementType(TRUE, TRUE);
         if ($element_type) {
@@ -644,20 +655,20 @@ function template_preprocess_views_view_table(&$variables) {
         }
 
         // Only bother with separators and stuff if the field shows up.
-        if (!empty($field_output) && empty($variables['rows'][$num]['columns'][$column]['content'])) {
+        if (!empty($field_output) && empty($column_reference['content'])) {
           // Place the field into the column, along with an optional separator.
-          if (!empty($variables['rows'][$num][$column]['content'])) {
+          if (!empty($column_reference['content'])) {
             if (!empty($options['info'][$column]['separator'])) {
-              $variables['rows'][$num]['columns'][$column]['content'] .= filter_xss_admin($options['info'][$column]['separator']);
+              $column_reference['content'] .= filter_xss_admin($options['info'][$column]['separator']);
             }
           }
           else {
-            $variables['rows'][$num]['columns'][$column]['content'] = '';
+            $column_reference['content'] = '';
           }
-          $variables['rows'][$num]['columns'][$column]['content'] .= $field_output;
+          $column_reference['content'] .= $field_output;
         }
       }
-      $variables['rows'][$num]['columns'][$column]['attributes'] = new Attribute($variables['rows'][$num]['columns'][$column]['attributes']);
+      $column_reference['attributes'] = new Attribute($column_reference['attributes']);
     }
 
     // Remove columns if the option is hide empty column is checked and the
