Problems creating a table (or something equivalent)

I don’t want a responsive table, I want a scroll bar if it’s wider than the screen and a little control over the borders.

I can’t use Google sheets, I need it to be dynamically generated because I want to be able to filter and sort on demand, and show different content to different users.

If I had control over html I could make a table with all the rows with the same height (no wrapping) and automatic width, or allow the wrapping on some of them and set the width of each column programmatically.

A more Anvillista way would be something like:

tp = TablePanel()
tr = TableRow()
tr.add_component(Label("Hello"))
tr.add_component(Label("World"), col_span=2, border_style="solid solid dotted solid"))
tp.add_component(tr)