In ActivePerl,It's easy to use OLE.Use my package ,It's more easy to Dump an array to Excel.Just say:
use MyDump('Dump2Excel');
Dump2Excel([1,2,3,4,5,6,7,8,9,10]);
No matter how long the array is.
package MyDump;
use Exporter;
use Win32::OLE qw( in with);
use Win32::OLE::Const 'Microsoft Excel';
use strict;
our @ISA=('Exporter');
our @EXPORT_OK=('Dump2Excel');
$Win32::OLE::Warn=3;
sub Dump2Excel
{
my $r2a=shift;
my $line;
my $Excel=Win32::OLE->new("Excel.Application");
$Excel->{'Visible'}=1;
my $Book=$Excel->Workbooks->Add;
my $Sheet=$Book->Worksheets(1);
my $row=1;
my $col=1;
my $value;
foreach $line(@{$r2a})
{
foreach $value(@{$line})
{
$Sheet->Cells($row,$col)->{'Value'}=$value;
$col++;
}
$row++;$col=1;
}
}
1;
=Example
use MyDump('Dump2Excel');
my @line1=('number','name','sex','age');
my @line2=('0','Jack','M','28');
my @line3=('1',"Marry",'F','29');
Dump2Excel([\@line1,\@line2,\@line3]);
Or, for a platform-independant solution using DBD::CSV with the most recent SQL::Statement:
use DBI;
my $dbh=DBI->connect('dbi:CSV:');
my $AoA =[ ['number','name','sex','age'],
['0','Jack','M','28'],
['1',"Marry",'F','29'] ];
$dbh->do("CREATE TABLE worksheet AS IMPORT(?)",{},$AoA);
__END__