Download = Move from remote (server) to local (drive) --- R → L
Upload = Move from local (drive) to remote (server) --- L → R
Import = Move from remote (drive) to local (application) --- R → L
Export = Move from local (application) to remote (drive) --- L → R
- Remote to Local -- "Get" data -- Down Arrow -- Import, Download
- Local to Remote -- "Send" data -- Up Arrow -- Export, Upload
The arrows make perfect sense to me.
What is seen as "local" and "remote" changes, but the actual logic behind the arrows is valid.
[I've gotten] into a disagreement with my colleagues for using a download icon (downward arrow) instead of an export icon (upward arrow) to download/export a table of data from a web page into an Excel file.
Given this context, if you were taking data from a web page, i.e. a web server, and saving it to a local hard drive, you were downloading the data. Moving data from a remote location to a local location. I would agree with you that the download arrow is the correct usage. Export would be incorrect.
However, if you did all this on the server - i.e. mySQL to a .xls command, Then you would be exporting the data from it's local location (native format) to a remote location (different format).
Reality is that it's mostly semantics and very dependent upon specific steps and the order they are taken. It's possible to both export and download at the same time (as it appears to the user). So.. there's probably no solid, definitive, answer without explicit steps being provided.
Most web-based doc editors, such as GoogleDocs treat the UI items as if the application was local even though it is not. So, they'll typically use the Export icon for such an action, even though technically it's doing both exporting (by the server) and downloading (by the user).