Anywhere from really easy to surprisingly hard.
1) Is the csv file posted with the same or predictable names in the same or a predictable URL path? If so easy. If not, less so.
2) If the second excel file also in CSV format? If so easy, if not, hard.
3) Hard to say what you're looking for here. Depending on the format of the report, I'd be tempted to have python write a LaTeX file and then compile that to a PDF.
4) There are some pretty nice python e-mail APIs. Depending on the e-mail service you use, you may have to mess around a bit to get newer security practices to work. The one time I did some automated e-mailing through my gmail account I gave up and just turned off a lot of the improved security features so it'd be easy for my python script to access my inbox.*
*Very geeky and non-practical project. Had a python cron job that checked e-mail, looking for unread messages, and if there was an unread message from anyone on a short list of people I really enjoyed talking to, talked to the hue API and turned a light in my office purple.