The motivation is to be DRY.  It is a little harder to maintain since if you fix something in one method you have to remember to fix it in the other.  And it gets worse if we want to add more extensions later.

http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

There are a couple of ways to reduce excessive parameters.  You could keep the addXLSCellLink and addPPTCellLink methods that call a separate method that takes the extension.  Then business logic is not duplicated.

Another potential option is to extract a class for all of the html printing methods and have private variables for things like the PrintWriter.