The print() method of JTable has lots of problems. When you change the font in the table text gets printed upside-down and other stuff.
I have created an JTableExcel printer API. What it does is take all the data of your JTable and push it into an Excel sheet and print the Excel sheet. You can even use templates (so you only print a number of columns, in a different order, with pre-defined colors).