The darker grey should stay in place while the lighter greys can be scrolled from left to right and top to bottom with the date column on top (the smaller grey piece, also fixed in place).
How should I try to do this? Is it possible with the table component? Or the list views?
Custom components is kinda hard for me, I could try if that is the only option.
In the table component you can pin columns to the left or right of the table so they don’t disappear when you scroll. Is that what you are looking for?
Also, with regards to the dates, I'm assuming these will be dynamic and may change depending on the data being pulled. If that's the case, here's a very useful post on "dynamic columns" that may help you with obtaining what you need for your headers.
You can also achieve what you're looking for with a listView if you want to customize a bit more. However, my recommendation would be for the table.