Another way to go (cheap if you are coding now, expensive if you have already encoded everything) would be modular for every action you have to perform in one Struts2 action.
Then you will have something like BaseReportAction containing all the common attributes and methods shared using protected instead of private , by configuring the parameters and general operations in the execute() method;
And one action for each report that extends BaseReportAction, say
ExcelReportAction, PdfReportAction, etc.
or
MinimalReportAction, CompleteReportAction, etc.
and
DailyReportAction, MonthlyReportAction, etc.
And the only requirement would be to use super.execute(); as the first statement for each child action execute() method.
That way, you can take advantage of inheritance, have a lot smaller, cleaner (ultimately packaged in several subpackages). Actions instead of one huge action with many methods.
All utility methods used by several reports will be available only for these reports, and not for all others (say, for example, PDF and XLS files) ...
You can also use XML Validation for different actions (perhaps one report requires different inputs from another).
Finally, your setup code will be Thread-Safe (actions are thread safe, interceptors do not).
But as said, this is the choice of implementation that is better suited for the pre-code phase (even if itβs not so difficult to reorganize, depending on the size of the web application ...).