Template is the way to go for projects like this. It really makes things much easier for a team. HTML coders can get the thing to look just right while programmers feed them the data. Separation of form and content. It's a beautiful thing. You could actually do this programmatically with Template. It has builtin iterators itself. It'd look a little different, but would be similar to the nested loops concept. In fact, I think that Template has a table function you might be able to use:
Template::Table
But you have to go through the {sarcasm}joy{/sarcasm} of installing Template first. It isn't that bad, actually, especially for just the plain jane version. You might look into it.