Spreadsheet::WriteExcel only knows how to write spreadsheets -- not how to read them in. By opening the file in 'append' mode, you are simply catenating another complete spreadsheet file to your existing complete file. I guess excel does not care if there is extraneous data after the file. I think you want to: