I would like to second duyet's++ suggestion to not read Excel files using Win32::OLE. While the Win32::OLE module is well written and powerful you are tied to using the Microsoft Excel application as an intermediary to read the file. As a minimum the sheet order and sheet number are not always consistent in the background of Excel files (especially in Excel 2007 and newer) so when you use sheet number to call a sheet it doesn't always return the one you expected. Additionally if you are multitasking and accidentally click on the Excel application window while the Win32::OLE is reading it you can cause other unintended consequences. The other suggested solutions are generally robust, well documented, do not have these same pitfalls, and do not require a Microsoft Excel licence either!