def from_messy(messy_rowset):
        """Import a rowset (table) from messytables, e.g. to work with each
           table in turn:
               tables = messytables.any.any_tableset(fobj)
               for mt_table in tables:
                   xy_table = xypath.Table.from_messy(mt_table)
                   ..."""

        assert isinstance(messy_rowset, messytables.core.RowSet),\
            "Expected a RowSet, got a %r" % type(messy_rowset)
        new_table = Table.from_iterable(
            messy_rowset,
            value_func=lambda cell: cell.value,
            properties_func=lambda cell: cell.properties,
            name=messy_rowset.name)

        if hasattr(messy_rowset, 'sheet'):
            new_table.sheet = messy_rowset.sheet
        return new_table