in reply to Win32::OLE and Excel

I don't develop on Win machines, but it occurred to me that that you're using a UNIX line separator:

my $RECORD_SEP = "\n";

Maybe when you open from excel it transaltes automatically into Win line separator (\r\n) Try:

my $RECORD_SEP = "\r\n";

Just a guess.
-Matthew