What I ended up doing was taking the [loop] and [/loop] tags out of the table itself, and put them around the table, so it looks like this now:
[loop type='post' category='Products']
<table style="width: 100%;" cellspacing="15" cellpadding="15">
<tbody>
<tr>
<td colspan="2" align="center">
<h2><strong>
<span style="text-decoration: underline;">
[content field='title']
</span>
</strong></h2>
</td>
</tr>
<tr>
<td align="center" width="25%"><img style="width: 100%; max-width: 150px;" alt="" src="[content field='image-url']" />
[content field='cart_Price']</td>
<td>[content]</td>
</tr>
<tr>
<td colspan="2">
<hr />
</td>
</tr>
</tbody>
</table>
[/loop]
Now, rather than creating the loop in the middle of the table outside of any cells, it is created outside of the table, and ends outside of the table, so basically I now have a table for each time the loop, well, loops. It works good, and looks alright, so no harm no foul.