We had similar case for our Warehouse module.
Basically, there were couple of Wholesale distributors that either listed their stock/prices online, behind authorization or sent out data through e-mail[sic].
We created a system where a plugin could be selected and depending on the plugin user had to provide certain information (login/password for some services). After that either the user uploaded the file to EPESI through designed interface or simply ordered the system to contact the distributor and update stock/prices. It's a lot of work and even if you need to parse only one format, you can expect some bumps on the road.
But to the matter, our recommendation:
- Put the importing procedure in separate module. It will make it much easier to manage later.
- If possible, use csv export instead, it's much easier and more reliable than xls.
- Make the process as effortless to the user as possible. Ideally all the user needs to do is to login to EPESI, go to products, upload the file and review the summary of the results.
- Using Utils/FileUpload module will simplify the upload process for you
- The breaking point for many synchronization systems is the match-finding procedure. Analyze the data over a set period of time, check if you should use their internal ID (if provided) to recognize and match items or if you will have to compare the names. Make the system flexible when it comes to items that were not found in the system. Consider saving them in session and after the import ask the user if he/she wants to add all the new items.
That's about all the general suggestions we can make. If you have any specific questions, don't hesitate to ask them in this thread.