I think you need to install the client .DLLs on each PC that tries to run the application.
It seems stupid for a .NET framework to not be runnable over the network, doesn't it?
I think the way that it should work is that all the .net DLLs and so forth that are pointed to in various places in the Registry on the local computer, instead point to the various DLLs on a server somewhere. But unless HKEY_CLASSES_ROOT\\CLSID\\{04B1A7E3-4379-39D2-B003-57AF524D9AC5} and so forth can take [link|http://publib.boulder.ibm.com/infocenter/tivihelp/v1r1/index.jsp?topic=/com.ibm.itsmc.doc/ans60000122.htm|UNC Names], and I don't think they can, then I think you're out of luck.
Why can't you put the .net DLLs on the clients that want to run your application? I would assume that a relatively simple installer script could check the registry for the presence of the .net framework and spawn the .net installer if it's absent. Alternatively, your application could probably be ported to Python pretty easily as there are Python modules to read .xls files.
Note that I'm not a programmer so the previous suggestions are left as an exercise for those who are.
HTH a bit. Good luck!
Cheers,
Scott.