diff -Bu tablefield/tablefield.css tablefield-new/tablefield.css
--- tablefield/tablefield.css	2009-10-27 13:27:05.000000000 -0400
+++ tablefield-new/tablefield.css	2010-06-29 00:38:36.000000000 -0400
@@ -6,20 +6,34 @@
   margin: 1px 1px 1px 1px;
   padding: 1px 1px 1px 1px;
 }
+#content-field-edit-form .node-tablefield table .form-text,
+.node-form .node-tablefield table .form-text {
+  width: 85%;
+  border: 0;
+  padding: 0.25em 0.5em;
+}
 #content-field-edit-form .node-tablefield .form-item,
 .node-form .node-tablefield .form-item {
-  float: left;
   margin: 0 0 0 0;
   padding: 0 0 0 0;
 }
 #content-field-edit-form .node-tablefield table,
 .node-form .node-tablefield table {
   width: auto;
+  border: 1px solid #ccc;
+}
+#content-field-edit-form .node-tablefield table tr th,
+.node-form .node-tablefield table tr th {
+  padding: 0.25em 0.5em;
+  color: #000;
+  background: #e7e7e7;
+  border: 1px solid #ccc;
 }
 #content-field-edit-form .node-tablefield table tr td,
 .node-form .node-tablefield table tr td {
   margin: 0 0 0 0;
   padding: 0 0 0 0;
+  border: 1px solid #ccc;
 }
 #content-field-edit-form .node-tablefield .tablefield-rebuild,
 .node-form .node-tablefield .tablefield-rebuild {
diff -Bu tablefield/tablefield.module tablefield-new/tablefield.module
--- tablefield/tablefield.module	2010-06-24 11:20:05.000000000 -0400
+++ tablefield-new/tablefield.module	2010-06-29 00:46:18.000000000 -0400
@@ -261,6 +262,7 @@
  *   the form item for a single element for this field
  */
 function tablefield_widget(&$form, &$form_state, $field, $items, $delta = 0) {
+  $form['#attributes']['enctype'] = 'multipart/form-data';
   $element = array(
     '#type' => $field['widget']['type'],
     '#default_value' => isset($items[$delta]) ? $items[$delta] : NULL,
@@ -369,13 +371,27 @@
   // Render the form table
   $element['tablefield']['a_break'] = array(
     '#type' => 'markup',
-    '#value' => '<table>',
+    '#value' => "<table id=\"node-tablefield-table-{$delta}\"><thead><tr>",
+  );
+  for ($i = -1; $i < $count_cols; $i++) {
+    $element['tablefield']['a_break_' . ($i + 1)] = array(
+      '#type' => 'markup',
+      '#value' => $i == -1 ? '<th></th>' : '<th>' . str_replace('@', '', chr(64 + (intval($i / 26) % 26)) . chr(65 + ($i % 26))) . '</th>',
+    );
+  };
+  $element['tablefield']['a_break_' . ($count_cols + 1)] = array(
+    '#type' => 'markup',
+    '#value' => '</tr></thead><tbody>',
   );
   for ($i = 0; $i < $count_rows; $i++) {
     $element['tablefield']['b_break' . $i] = array(
       '#type' => 'markup',
       '#value' => '<tr>',
     );
+    $element['tablefield']['cell_' . $i . '_'] = array(
+      '#type' => 'markup',
+      '#value' => '<th>' . ($i + 1) . '</th>'
+    );
     for ($ii = 0; $ii < $count_cols; $ii++) {
       $element['tablefield']['cell_' . $i . '_' . $ii] = array(
         '#type' => 'textfield',
@@ -393,7 +409,7 @@
   }
   $element['tablefield']['t_break' . $i] = array(
     '#type' => 'markup',
-    '#value' => '</table>',
+    '#value' => '</tbody></table>',
   );
 
   // Allow the user to add more rows/columns
