benlaw,
I have a fair amount of experience doing this on a *nix system. This meant not being able to use Win32::Ole. Depending on what it is you want to do, Spreadsheet::ParseExcel and Spreadsheet::WriteExcel should be a good place to start in a non-windows environment. I ran into several advanced problems (graphs and formatting) that required me to modify the original code so if you run into specific problems - be sure to post them here.