diff --git a/pydocx/export/base.py b/pydocx/export/base.py
index 67b002bc..4fd1778b 100644
--- a/pydocx/export/base.py
+++ b/pydocx/export/base.py
@@ -427,6 +427,8 @@ def export_table(self, table):
return self.yield_nested(table.rows, self.export_node)
def export_table_row(self, table_row):
+ if table_row.is_hidden:
+ return # skip — row is marked hidden in the docx
return self.yield_nested(table_row.cells, self.export_node)
def export_table_cell(self, table_cell):
diff --git a/pydocx/openxml/wordprocessing/__init__.py b/pydocx/openxml/wordprocessing/__init__.py
index 4fce72a2..236e17cc 100644
--- a/pydocx/openxml/wordprocessing/__init__.py
+++ b/pydocx/openxml/wordprocessing/__init__.py
@@ -44,6 +44,7 @@
from pydocx.openxml.wordprocessing.table_row import TableRow
from pydocx.openxml.wordprocessing.text import Text
from pydocx.openxml.wordprocessing.textbox_content import TxBxContent
+from pydocx.openxml.wordprocessing.table_row_properties import TableRowProperties # noqa
__all__ = [
'AbstractNum',
diff --git a/pydocx/openxml/wordprocessing/table_row.py b/pydocx/openxml/wordprocessing/table_row.py
index c9f15744..4ff31cd3 100644
--- a/pydocx/openxml/wordprocessing/table_row.py
+++ b/pydocx/openxml/wordprocessing/table_row.py
@@ -5,13 +5,20 @@
unicode_literals,
)
-from pydocx.models import XmlModel, XmlCollection
+from pydocx.models import XmlModel, XmlChild, XmlCollection
from pydocx.openxml.wordprocessing.table_cell import TableCell
+from pydocx.openxml.wordprocessing.table_row_properties import TableRowProperties # NEW
class TableRow(XmlModel):
XML_TAG = 'tr'
- cells = XmlCollection(
- TableCell,
- )
+ # NEW: wire in the trPr properties element
+ properties = XmlChild(type=TableRowProperties)
+
+ cells = XmlCollection(TableCell)
+
+ @property
+ def is_hidden(self):
+ """Return True if this row has ."""
+ return self.properties is not None and self.properties.hidden is not None
\ No newline at end of file
diff --git a/pydocx/openxml/wordprocessing/table_row_properties.py b/pydocx/openxml/wordprocessing/table_row_properties.py
new file mode 100644
index 00000000..1201b4c7
--- /dev/null
+++ b/pydocx/openxml/wordprocessing/table_row_properties.py
@@ -0,0 +1,17 @@
+# coding: utf-8
+from __future__ import (
+ absolute_import,
+ print_function,
+ unicode_literals,
+)
+
+from pydocx.models import XmlModel, XmlChild
+
+
+class TableRowProperties(XmlModel):
+ XML_TAG = 'trPr'
+
+ # The presence of means the row is hidden.
+ # XmlChild without attrname returns the raw element if found,
+ # or None (default) if absent — so bool(hidden) works directly.
+ hidden = XmlChild(name='hidden')
\ No newline at end of file