Why not use a simple database? The schema is already defined within the excel spreadsheet, and you'd get away from data integrity errors (your solution is not multi-user safe). And you would still be able to create the spreadsheet whenever necessary using something like Spreadsheet::WriteExcel. You already seem to be doing much of the work already; using a db would allow SQL to more efficiently update just the row that needed to be instead of chugging through the entire XML file each and every time.
Comment on Re: best way to change xml record using XML::Simple?
If you've been able to compile XML::Parser, you should also be able to compile and install DBD::SQLite, which is a fast full-functional DBI-compliant DB without the overhead of a server process.