I've used
Spreadsheet::ParseExcel on many occasions and found it to be just fine. However, since it's a third-party module and not Excel itself (which is what you're using when you use OLE), it's not going to be as good because of any undocumented features. So, if you have the option, use OLE. If you can't, S::PE is an excellent option.
The Perfect is the Enemy of the Good.