Printing a schedule as a grid

I have a set of classes. Each class has information such as a title, a day, a time and a room. Each class can have one to several teachers associated with it. In list view, I have a layout that works well for printing this information out. I have a portal that refers to the teachers. The layout refers to these lessons and in list view, each class prints out nicely with associated teachers.

What I'd like to do is print this out in a grid with time the vertical axis and room the horizontal one. Ideally, the two days would print out front and back. If I set up a layout in form view and have it refer to a specific group of classes (each year there is a two day workshop), I can print a title with overall information such as the day for all the classes on the sheet. And I can divide the page into a grid using filtered portals to print out specific information about each class in the appropriate grid (such as class title). But I really need to put a portal in a portal then to include the list of teachers. I can imagine a horrid workaround where I have a variable of teachers within each class with multiple instances and just redo the database structure. Can I do this with the current structure?