Hi @Anonymous
Seems like you have a lot of work cut out.
Here is an idea i played with some time ago, maybe it can help you too.
Create Excel Tables that will be used to build your forms:

Import the excel table as static data

Add a gallery control which you can also drive from the static data to get the total columns and rows and build a collection based on them. in this case the columns are 6 as well as the rows.
ClearCollect(_MainFormStruct,Sequence(txtCols * txtRows))
Set the WrapCount of the gallery to your column count

Add a label to the gallery and set its border width to 1

set the witdh and height of the label as you need it
fill the first two rows and first column with gray
If(ThisItem.Value <= txtCols.Text * 2 || Mod(ThisItem.Value,txtCols.Text) = 1, LightGray, White)

lets hide those number, set the font to transparent

Add anohter label and center the text, set the text to
LookUp(FormMeta, Cell = ThisItem.Value, Value)

There you almost there
how you store an call your image i will leave to you.
lastly add a text with its visible = If(ThisItem.Value <= txtCols.Text * 2 || Mod(ThisItem.Value,txtCols.Text) = 1, false, true)
and here is your form in run mode

It takes some time to setup but once doen all the forms are easy to build.
Hope you can use this or help you on path