You can hide columns by putting a condition on them of type PL/SQL Expression and using the following as the expression:
That will check the APEX bind variable "REQUEST", and if it is CSV, XLS, PDF, HTMLD or RTF then the column will not be shown.
Note that newer Apex versions also have an "Include In Export / Print" option, which might be sufficient for most purposes.
To stop a column from showing up for an email, you can use the following:
Source:
http://stackoverflow.com/questions/9700660/apex-interactive-report-hide-column-in-csv-download
Note: This source suggests using XML as one of the :REQUEST options. That is incorrect, this should be HTMLD as in the example above.