I believe this can be done in blocks without JavaScript using vertical and horizontal Canvas based scroll bars, to scroll via clipping a parallel Horizontal Arrangement of ListViews.
You will need to keep:
- a master list of player names
- a list (indexed by column) of dicts (keyed by name) of player column scores, filled with zeroes initially
- a global offset index into the player name list for clipping the ListViews' fronts
- a global offset index into the column numbers for assigning columns to ListViews
Each vertical or horizontal Canvas drag should rebuild the ListViews' Elements lists from the dicts, by adding a header and then the column scores (or name if column 1) taking into account the 2 offsets.
See these projects for parts you can use ...