summaryrefslogtreecommitdiffstats
path: root/lib/Spreadsheet/Template/Writer/Excel.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Spreadsheet/Template/Writer/Excel.pm')
-rw-r--r--lib/Spreadsheet/Template/Writer/Excel.pm30
1 files changed, 21 insertions, 9 deletions
diff --git a/lib/Spreadsheet/Template/Writer/Excel.pm b/lib/Spreadsheet/Template/Writer/Excel.pm
index da54cea..d24b3ae 100644
--- a/lib/Spreadsheet/Template/Writer/Excel.pm
+++ b/lib/Spreadsheet/Template/Writer/Excel.pm
@@ -153,24 +153,36 @@ sub _write_worksheet {
}
}
- if (exists $data->{merge}) {
- for my $i (0..$#{ $data->{merge} }) {
- my $merge = $data->{merge}[$i];
+ if ( exists $data->{merge} ) {
+ for my $i ( 0 .. $#{ $data->{merge} } ) {
+ my $merge = $data->{merge}[$i];
my $format = $merge->{format};
my $format_obj;
- if (exists $self->_formats->{$format}) {
- $format_obj = $self->_formats->{$format};
+ if ( exists $self->_formats->{$format} ) {
+ $format_obj = $self->_formats->{$format};
}
else {
$format_obj = $self->excel->add_format(%$format);
$self->_formats->{$format} = $format_obj;
}
- $sheet->merge_range($merge->{range}, $merge->{contents}, $format_obj);
+
+ $merge->{type} = 'formula' if defined $merge->{formula};
+
+ $sheet->merge_range_type(
+ $merge->{type},
+ $merge->{range},
+ defined $merge->{formula}
+ ? $merge->{formula}
+ : $merge->{contents},
+ $format_obj,
+ defined $merge->{formula} ? $merge->{contents} : ()
+ );
}
}
- if (exists $data->{autofilter}) {
- my @autofilter = @{$data->{autofilter}};
- $sheet->autofilter($autofilter[0], $autofilter[1], $autofilter[2], $autofilter[3]);
+ if ( exists $data->{autofilter} ) {
+ my @autofilter = @{ $data->{autofilter} };
+ $sheet->autofilter( $autofilter[0], $autofilter[1], $autofilter[2],
+ $autofilter[3] );
}
}