If you use the niceTables.pl macro library, then you can do this (in PGML; change outer delimiters for TEXT). It's separated by cell entry with carriage returns just for readability. (EDIT: when I submitted this, the helpful indentation went away. Imagine it with indentation denoting when new rows in the table start.)
[@DataTable(
[
['',
'',
'',
'',
6,
5],
[[5,texpre=>'\cline{3-6}',],
6,
[3,halign=>'|c',cellcss=>'border-top:solid 1px;',],
[6,cellcss=>'border-top:solid 1px;',],
[7,cellcss=>'border-top:solid 1px;',],
[8,cellcss=>'border-top:solid 1px;',]],
['',
'',
[3,cellcss=>'border-bottom:solid 1px;',],
[3,cellcss=>'border-bottom:solid 1px;',],
[6,cellcss=>'border-bottom:solid 1px;',]],
[['',texpre=>'\cline{3-5}',],
'',
'',
3,
1,
8],
['',
'',
'',
[2,cellcss=>'border-bottom:solid 1px;',],
[8,cellcss=>'border-bottom:solid 1px;',],
[0,cellcss=>'border-bottom:solid 1px;',]],
[['',texpre=>'\cline{4-6}',],
'',
'',
'',
3,
8],
]
)@]*
It works for hard copy too, although DataTable automatically comes with a top rule and bottom rule that would be unwanted here. Perhaps I should make those optional. You could use LayoutTable, but I think positioning is important here, so LayoutTable is not appropriate.
If this doesn't work, it may be that you are on an older version of niceTables.pl or the things it relies on. I've confirmed it works for me.