in reply to emptying a hash into a spreadsheet

write_col wants an array of scalars, not an array of anonymous array references. Since your values in that hash are already such, try this:
my $i = 1; for my $key (sort keys %hash) { $worksheet->write_col(1,$i++,$hash{$key}); }
And yes, write_col will insert entire 2D arrays, my question is why do store your rows in a hash? Quick lookups is the only reason i can ascertain - if you really don't need that, then store them in a 2D array and you can use:
$worksheet->write_col('A1',\@2D_array);

UPDATE:
I should test before posting, not after ... i realized that you can use something like:

$worksheet->write_row('A1',[values %hash]);
Notice that i used write_row and not write_col ... i let you figure that one out. ;)

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)