Sometimes you just want to export some columns, Spreadsheet::WriteExcel::Simple is a perfect fit for that:
#!/usr/bin/perl
use strict;
use warnings;
use Spreadsheet::WriteExcel::Simple;
my $xls = Spreadsheet::WriteExcel::Simple->new;
$xls->write_bold_row([qw/Date Time Thing/]);
$xls->write_row(['12/22/10', '10:00', 'buy presents']);
$xls->write_row(['12/22/10', '16:00', 'wrap presents']);
$xls->write_row(['12/24/10', '18:00', 'give presents']);
$xls->save('todo.xls');
Besides from saving the file, this module has mainly two methods: write_bold_row and write_row. I use the first one for headings and the latter for every row of data.
Spreadsheet::WriteExcel::Simple ist just a wrapper around Spreadsheet::WriteExcel. book and sheet give you access to the underlying objects. So you can adjust the settings:
$xls->sheet->keep_leading_zeros
will allow you to write data like '01234'. (For example some German zip codes have a leading zero.)The counterpart for reading is (you propably guessed it already) Spreadsheet::ParseExcel::Simple:
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dump qw/pp/;
use Spreadsheet::ParseExcel::Simple;
my $xls = Spreadsheet::ParseExcel::Simple->read('todo.xls');
my $sheet = ($xls->sheets)[0];
my @output;
my @headlines = $sheet->next_row;
while ($sheet->has_data) {
my @data = $sheet->next_row;
my %item;
foreach (@headlines) {
$item{$_} = shift @data;
}
push @output, \%item;
}
print pp(\@output);
# Output:
[
{ Date => "12/22/10", Thing => "buy presents", Time => "10:00" },
{ Date => "12/22/10", Thing => "wrap presents", Time => "16:00" },
{ Date => "12/24/10", Thing => "give presents", Time => "18:00" },
]
If you want to do more complex stuff, have a look at Spreadsheet::ParseExcel and Spreadsheet::WriteExcel.
Links:
- Spreadsheet::ParseExcel (distribution)
- Spreadsheet::ParseExcel (documentation)
- Spreadsheet::ParseExcel::Simple (distribution)
- Spreadsheet::ParseExcel::Simple (documentation)
- Spreadsheet::WriteExcel (distribution)
- Spreadsheet::WriteExcel (documentation)
- Spreadsheet::WriteExcel::Simple (distribution)
- Spreadsheet::WriteExcel::Simple (documentation)
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.